我正在编写一个pytest插件,它应该测试设计用于在一组特定环境中工作的软件。在pytest中嘲弄模块导入
我正在编写的软件运行在一个更大的框架内,这使得某些Python模块只有在框架内运行我的Python软件时才可用。
为了测试我的软件,我需要“模拟”或伪造整个模块(实际上,不少)。我需要以某种类似外观的方式实现它的功能,但是我的问题是如何使用py.test插件将这个假Python模块提供给我的软件代码?
例如,假设我有下面的代码在我的源文件中的一个:
import fwlib
def fw_sum(a, b):
return fwlib.sum(a, b)
然而,fwlib
模块仅通过我运行从我的软件框架可用,而我无法测试在里面。
我如何确保从pytest插件中确定名为fwlib
的模块已在sys.modules
中定义?当然,我需要自己实施fwlib.sum
。我正在寻找如何做到这一点的建议。
这很好,谢谢!你能否澄清最后一个声明,关于这个声明中是否需要包含它? – NirIzr
假设你有一个'。/ tests /'子目录,在创建一个发行版时,它不会被'setup.py'文件打包。您可以创建例如可以在测试运行期间导入的'。/ tests/mocks/fwlib.py',但它不会与您的库一起分发。 – wim
啊,我明白了。我会稍微等待其他答案来(不太可能),并尽快接受你的答案。再次感谢! – NirIzr