我正在尝试使用 unittest 和 unittest.mock 在我的应用程序中进行一些测试。
我有两个类 MainClass 和 Caller。我想用双调用者测试主类。简而言之,这就是我所拥有的:
class MainClass:
def __init__(self, caller):
self.caller = caller
def some_function(self):
self.caller.function1()
blab = self.caller.function2()
class Caller:
# some functions non of which should be accessed in tests
class CallerMock:
def __init__(self):
self.items = []
def function1(self):
pass
def function2(self):
return items
在我做的测试中:
class TestMainFunction(unittest.TestCase):
def setUp(self):
self.mock = MagicMock(wraps=CallerMock())
self.main_class = MainClass(self.mock)
def test(self):
# self.main_class.caller.items = items
# self.mock.items = items
# self.mock.function2.return_value = items
self.main_class.some_functions()
# non of the above change the return value of function2
然而问题是没有注释行实际上改变了我的function2的返回值。我怎样才能做到这一点?
我也会对不需要双精度且调用者的所有函数都返回 None 并且我必须在特定测试中指定函数的返回值的解决方案感到满意。