0

我以下列方式定义了我的构造函数。

def __init__(self):
    //set some properties
    ...
    self.helperMethod()

def helperMethod(self):
    //Do some operation

我想对辅助方法进行单元测试,但是为了创建对象来进行单元测试,我需要运行该__init__方法。但是,这样做会调用辅助方法,这是不可取的,因为这是我需要测试的方法。

我尝试模拟该__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]

对帮助方法进行单元测试的最佳方法是什么?

4

1 回答 1

0

您是否尝试过捕获 的原始值helperMethod

original_helperMethod = SomeClass.helperMethod
SomeClass.helperMethod = MagicMock()
x = SomeClass()
SomeClass.helperMethod = original_helperMethod

您还可以使用库中的patch装饰器mock

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
于 2013-09-17T20:05:01.207 回答