在 python 中使用mock,无法直接修补顶级包(如 argparse)——大概是因为没有对 patch 的引用。一种解决方案是将每个单独的调用修补到包中(如 argparse.ArgumentParser)。理论上,如果在没有相应补丁的情况下添加对包的调用,这将导致在单元测试期间意外调用导入。
尽管解决方法并不是那么不方便,但最好直接修补 argparse 之类的软件包。mock_open似乎使用了一些恶作剧来修补内置open()
using __main__.open
. 这是如何工作的,是否可以使用类似的恶作剧来修补顶级软件包?