1

假设有人在 python 文件的头部将模块设置为 MagicMock:

sys.modules['moduleABC'] = mock.MagicMock()

这会导致麻烦,因为当我尝试运行整个单元测试列表时,moduleABC 将是一个模拟。

如何在其余文件中将其取消设置为实际的 moduleABC?

4

1 回答 1

1

我认为更好的方法是将该单元测试更改为在函数中使用补丁setUp,然后它将应用于该模块中的所有测试,但最终会恢复,这也更好,因为每个测试都有自己的并且所有这些都不是一个模拟(例如,如果您测试模块中调用方法的次数,则必须累积测试中的所有调用......)

另一种选择是使用该tearDown函数并更改您将模拟分配给的方式:

import moduleABC

orig_abc = sys.modules['moduleABC']
sys.modules['moduleABC'] = mock.MagicMock()

def tearDown():
    sys.modules['moduleABC'] = orig_abc

但我强烈推荐第一个选项,因为它是更好的方法。

于 2016-01-15T20:48:56.370 回答