Python mock patch a function called by another function(Python mock 修补另一个函数调用的函数)
问题描述
def f1():
return 10, True
def f2():
num, stat = f1()
return 2*num, stat
如何使用 python 的模拟库修补 f1()
并返回自定义结果以便我可以测试 f2()
?
How do I use python's mock library to patch f1()
and return a custom result so I could test f2()
?
已我的测试有问题吗?这似乎不起作用,所有测试都因 AssertionError 而失败
Edited: Is there something wrong with my test? This doesn't seem to be working, all the tests failed with AssertionError
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))
推荐答案
第一个例子表明 f1() 和 f2() 定义在同一个模块中.因此,以下应该有效:
First example suggests that f1() and f2() defined in the same module. Hence the following should work:
from foo.bar import f2
from mock import patch
class MyTest(TestCase):
@patch('foo.bar.f1')
def test_f2_2(self, some_func):
some_func.return_value = (20, False)
num, stat = f2()
self.assertEqual((num, stat), (40, False))
补丁与导入相同:@patch('foo.bar.f1')
这是一个很好的答案:
http://bhfsteve.blogspot.nl/2012/06/patching-tip-using-mocks-in-python-unit.html
这篇关于Python mock 修补另一个函数调用的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python mock 修补另一个函数调用的函数


基础教程推荐
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 包装空间模型 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 求两个直方图的卷积 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01