def f1():
return 10, True
def f2():
num, stat = f1()
return 2*num, stat
如何使用python的模拟库修补f1()
,并返回自定义结果以便测试f2()
?
编辑: 我的考试有什么问题吗?这似乎不起作用,所有的测试都失败了
from foo.bar import f2
from mock import patch
class MyTest(TestCase):
def test_f2_1(self):
with patch('project.module.f1') as some_func:
some_func.return_value = (20, False)
num, stat = f2()
self.assertEqual((num, stat), (40, False))
@patch('project.module.f1')
def test_f2_2(self, some_func):
some_func.return_value = (20, False)
num, stat = f2()
self.assertEqual((num, stat), (40, False))
假设您正在使用这个mock库:
如果您的代码被分成多个模块,您可能需要用模块/函数的路径替换
__main__.f1
。第一个例子表明f1()和f2()是在同一个模块中定义的。 因此,以下措施应起作用:
修补程序与导入程序位于同一位置:
@patch('foo.bar.f1')
在这个问题上有一个很好的答案:
http://bhfsteve.blogspot.nl/2012/06/patching-tip-using-mocks-in-python-unit.html
相关问题 更多 >
编程相关推荐