大家都知道当我们测试一些复杂依赖其它系统的方法时Mock是很重要的手段,比如说下面的function A它的结果是依赖于function B的返回结果的:
def A():
ret = B()
if ret:
return Ture
else:
<error handling>
return False
假设function B很费时间,最致命的是B来自其它模块你有可能不能随心所欲地测试function A的所有分支——因为有想要B按你的要求输出结果测试数据将很难准备,这个时候Mock就可以帮到你了!
from mock import patch, MagicMock
@patch('B')
def test_function_A(self, mock_B):
mock_B.return_value = True
self.assertEqual(True, A())
看到没,使用Mock, 你可以直接设定B的返回值,从此测试function A的时候你不用再费心让function B返回你想要的结果!