python mock 修补顶层包
1 个回答
4
import unittest.mock as mock
mock_argparse = mock.Mock()
with mock.patch.dict('sys.modules', argparse=mock_argparse):
import argparse
print(argparse.ArgumentParser())
# <Mock name='mock.ArgumentParser()' id='140681471282448'>
关于 mock_open 的补丁:
m = mock_open()
with patch('__main__.open', m, create=True):
看起来它会创建一个 __main__.open
属性,并用一个模拟对象替代,这样就会遮盖掉内置的版本,就好像你在自己的模块里定义了 open()
函数一样。我想在实际测试中,你应该补丁 module_x.open()
,其中 "module_x" 是实际调用 open()
的模块。