gpt4 book ai didi

Python mock 修补另一个函数调用的函数

转载 作者:IT老高 更新时间:2023-10-28 21:55:13 27 4
gpt4 key购买 nike

def f1():
return 10, True

def f2():
num, stat = f1()
return 2*num, stat

如何使用 python 的模拟库修补 f1() 并返回自定义结果以便我可以测试 f2()

已编辑:我的测试有问题吗?这似乎不起作用,所有测试都因 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() 定义在同一个模块中。因此,以下应该有效:

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 修补另一个函数调用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10277397/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com