Mock
Mock 测试为辅助单元测试的一个模块, 通常用来替换外部接口的依赖
举例使用方法
1. Mock 测试可以用来测试调用函数的具体参数, 而不是实际去调用它.
如下例子: 当测试os.remove
时,因为os.remove
时python标准库里的东西,已经具有了完备的单元测试.所以,为了我们业务功能需求,使用mock测试,仅仅保证传递参数正确就可以.
from mymodule import rm
import mock
import unittest
class RmTestCase(unittest.TestCase):
@mock.patch('mymodule.os')
def test_rm(self, mock_os):
rm("any path")
# test that rm called os.remove with the right parameters
mock_os.remove.assert_called_with("any path")
2. Mock 测试可以用来作参数的设定, 用来测试不同的情况:
如下例子: 在自定义rm
函数中, 加入了文件判断操作. 因为isfile
是os
标准库,已具有完备的单元测试,所以为了避免直接进行对文件的操作判断,为了测试我们的模块,使用mock
对os.path
和 os
进行mock操作, 判断两种不同的情况
mymodule.py
import os
import os.path
def rm(filename):
if os.path.isfile(filename):
os.remove(filename)