我已按以下方式定义了构造函数。
def __init__(self):
//set some properties
...
self.helperMethod()
def helperMethod(self):
//Do some operation
我想对辅助方法进行单元测试,但是为了创建对象来进行单元测试,我需要运行__init__
方法。但是,这样做会调用helper方法,这是不可取的,因为这是我需要测试的方法。
我尝试嘲笑__init__
方法,但收到错误__init__ should return None and not MagicMock
。
我也尝试用以下方式模拟帮助器方法,但我找不到手动恢复模拟方法的方法。 MagicMock.reset_mock()不会这样做。
SomeClass.helperMethod = MagicMock()
x = SomeClass()
[Need someway to undo the mock of helperMethod here]
对辅助方法进行单元测试的最佳方法是什么?
答案 0 :(得分:0)
您是否尝试过捕获helperMethod
的原始值?
original_helperMethod = SomeClass.helperMethod
SomeClass.helperMethod = MagicMock()
x = SomeClass()
SomeClass.helperMethod = original_helperMethod
您还可以使用mock
库中的patch
装饰器
from mock import patch
class SomeClass():
def __init__(self):
self.helperMethod()
def helperMethod(self):
assert False, "Should not be called!"
x = SomeClass() # Will assert
with patch('__main__.SomeClass.helperMethod') as mockHelpMethod:
x = SomeClass() # Does not assert