如何在 python 中为单元测试伪造缺失的依赖项?
How can I fake a missing dependency for unit testing in python?
我写了一个 python 模块,它依赖于我的 CI 测试机器上不可用的第三方包,所以我无法远程测试我的模块,因为我可以'通过 import dependency
语句。
如果我们假设我无法在 CI 主机上手动安装依赖项(似乎很痛苦),那么 fake/mock/whatever 缺少第三方包的最简单方法是什么我可以测试我的代码吗?
我只使用依赖项提供的单个 class,所以如果有办法做到这一点,我很乐意只模拟该对象,而不是整个模块。
您始终可以在同一文件夹中创建一个 .py
文件,其文件名与模块名称相同,这样它将被导入而不是依赖项。
如果您只想在依赖项不可用时将其用作后备解决方案:
try:
import dependency
except ImportError:
import fakedependency as dependency
如果您的设置更复杂并且该模块在其他模块中作为依赖项使用,请模拟它:
import sys, fakedependency
sys.modules['dependency'] = fakedependency
如果需要,您可以将其与后备解决方案结合使用。
我写了一个 python 模块,它依赖于我的 CI 测试机器上不可用的第三方包,所以我无法远程测试我的模块,因为我可以'通过 import dependency
语句。
如果我们假设我无法在 CI 主机上手动安装依赖项(似乎很痛苦),那么 fake/mock/whatever 缺少第三方包的最简单方法是什么我可以测试我的代码吗?
我只使用依赖项提供的单个 class,所以如果有办法做到这一点,我很乐意只模拟该对象,而不是整个模块。
您始终可以在同一文件夹中创建一个 .py
文件,其文件名与模块名称相同,这样它将被导入而不是依赖项。
如果您只想在依赖项不可用时将其用作后备解决方案:
try:
import dependency
except ImportError:
import fakedependency as dependency
如果您的设置更复杂并且该模块在其他模块中作为依赖项使用,请模拟它:
import sys, fakedependency
sys.modules['dependency'] = fakedependency
如果需要,您可以将其与后备解决方案结合使用。