如何解除模拟.模块级的MagicMock



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

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

这会引起麻烦,因为当我试图运行整个单元测试列表时,moduleABC将是一个mock。

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

我认为更好的方法是改变单元测试使用补丁在setUp函数,那么它将申请所有模块的测试,但最终会恢复的,这也更好的为每个测试都有它自己的,而不是一个单一的模拟所有的(例如,如果您时间的考验一个方法被调用的模块你需要积累的所有调用测试…)

另一个选项是使用tearDown函数并稍微改变一下分配mock的方式:

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

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

相关内容

  • 没有找到相关文章

最新更新