如何在Python中模拟缺失的依赖项进行单元测试?

4
我编写了一个依赖于第三方包的Python模块,但在我的CI测试机上找不到该包,因此无法远程测试我的模块,因为我无法通过 import dependency 语句。假设我无法在CI主机上手动安装依赖项(看起来很麻烦),那么最简单的方法是什么?可以伪造/模拟/替代缺失的第三方包,以便我可以测试我的代码吗?我只使用依赖项提供的一个类,所以如果有办法仅对该对象进行模拟,而不是整个模块,那就太好了。
1个回答

7
你可以在同一文件夹下创建一个名称与模块名相同的.py文件,这样它就会被导入而不是依赖项。
如果你只想将它作为当依赖项不可用时的备选解决方案:
try:
    import dependency
except ImportError:
    import fakedependency as dependency

如果您的设置更加复杂,并且该模块被其他模块作为依赖项使用,请进行模拟:
import sys, fakedependency
sys.modules['dependency'] = fakedependency

如果想要,您可以将此与备选方案结合使用。


使用sys.modules正是我所需要的,谢谢。 - Duncan Macleod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接