我正在尝试将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的返回值。我怎样才能做到这一点?你知道吗
如果我不需要double,调用者的所有函数都将返回None,并且我必须在特定的测试中指定函数的返回值,那么我也很乐意使用这种解决方案。你知道吗
您可以模拟
Caller
,然后修补call()
方法。这样,您就不需要双人床了:相关问题 更多 >
编程相关推荐