如何测试顶级方法?

时间:2017-03-27 04:21:01

标签: python-3.x testing

我的情况与此类似:

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完成吗?

1 个答案:

答案 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进行比较。