python单元测试中的Magic Mock范围

时间:2019-02-18 21:50:35

标签: python python-unittest magicmock python-unittest.mock

据我了解,当我有两个测试时,其中一个我想模拟某个方法,然后在另一个方法中也模拟该方法,而无需显式调用MagicMock。

我对使用python进行单元测试非常陌生,一开始的模拟似乎很酷,但是此功能确实令人讨厌。我只是无法相信没有办法解决它。我知道我可以打补丁,但是如果我有10个要模拟的方法怎么办?有人知道这里有一些解决方法吗?

我知道这不是最好的问题,但是大约5分钟前我就知道了,我真的很生气,请原谅我;)

预先感谢,加油!

====编辑====

一段代码:

module_1 / some_file.py

from module_2.another_file import func_2

def func_1():
    if some_flag:
         ret = func_2()
    ...

module_2 / another_file.py

def func_2():
    ...
    return funky_obj

为了澄清-在这种情况下,我想测试未在some_flag中设置func_1时的行为,以便从未调用func_2

tests / test_func_1.py

from module_1.some_file import func_1
from module_2.another_file import func_2
...
    def test_func_1_some_flag_is_not_set(self):
        func_2 = MagicMock()
        ...
        func_2.assert_not_called()

tests / test_func_2.py

from module_2.another_file import func_2
...
    def test_funky_obj_has_some_value(self):
        actual_value = func_2()
        ...

在此示例中,在test_func_2.py中对func_2的调用将返回None,因为它是由MagicMock中的test_func_1.py定义的。

0 个答案:

没有答案