据我了解,当我有两个测试时,其中一个我想模拟某个方法,然后在另一个方法中也模拟该方法,而无需显式调用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
定义的。