我的情况与此类似:
def my_fun(x):
# do some stuff to x and put it in y
y = x+1
heavy_function(y)
heavy_function
是一个非常复杂的计算。我希望仅在my_fun
中测试test_my_fun
的顶部,而heavy_function
可以在其自己的测试方法中进行测试。
我知道我可以将my_fun
的相关部分提取到第三个函数中,然后对其进行测试,但这似乎会使我的代码库不必要地复杂化。我宁愿将假heavy_function
传递给my_fun
,这会给出(例如)用于测试my_fun
的输入的预先计算结果。
可以用Python完成吗?
答案 0 :(得分:0)
你看过python mock吗?你可以这样做:
from unittest import mock
def test_my_fun(self):
with mock.patch(`file_path.heavy_function`, return_value = foo):
self.assertEqual(my_fun(x), bar)
这可以模拟你想要的任何功能,这样你就可以将预期的返回值与你期望的my_fun
进行比较。