使用Python中的mock模块进行单元测试

使用Mock进行单元测试
本文介绍了如何使用Python的Mock模块来进行单元测试。当测试部分依赖于不想测试的其他部分时,可以通过Mock模拟这部分的行为并设置返回值。文章提供了具体的代码示例,包括模拟类的方法和普通函数。

在进行单元测试的时候,有时候会遇到这种情况:

出于某些原因,我们不想测试某一部分内容,但是我们想要测试的部分却依赖这部分内容。

这时候,可以使用mock模块来模拟调用这部分内容,并给出返回结果,举例如下:

比如我们不想测试类C中的函数a,只想得到一个返回结果,可以这么写:

#从Python 3.3 开始,mock被整合到了unittest中
#此时使用 from unittest import mock 引入mock模块
#python 3.3 之前使用 import mock
from
mock import patch import unittest class TestXXX(unites.TestCase) @patch.object(C, 'a')
  # or: @patch('C.a')
def test_xxx(self, Ca): Ca.return_value = 20 ......

这样在测试中调用C类中的a函数将直接返回20

以下方式也能实现目的:

...
    def test_xxx(self):
        c = C()
        c.a = mock.Mock(return_value = 20)
......

以上模拟的是类中的函数,也可以使用Mock来模拟普通函数

from mock import Mock

mfunc = Mock()
mfunc.return_value = 3

mfunc()    #3
  

也可以使用参数调用,并assert参数:

mfunc(1, 'a')            # 3
mfunc.assert_called_with(1, 'a') #assert that calls are made in a particular way

 http://cizixs.com/2015/05/28/python-mock-usage

转载于:https://www.cnblogs.com/geeklove01/p/8111954.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值