如何测试只在生产服务器中导入库的python代码

如何测试只在生产服务器中导入库的python代码,python,python-import,Python,Python Import,我正在尝试测试一个python模块,它是生产服务器中windows服务设置的一部分。但是,我尝试测试的模块会导入其他python模块,而这些模块又会导入仅存在于生产服务器中的库。示例如下: 模块a.py: import A import B class X(object): pass A.py: MyTestModule.py: from ModuleAlpha import X 尝试运行MyTestModule.py时,我收到以下错误: from ModuleAlpha impo

我正在尝试测试一个python模块,它是生产服务器中windows服务设置的一部分。但是,我尝试测试的模块会导入其他python模块,而这些模块又会导入仅存在于生产服务器中的库。示例如下:

模块a.py:

import A
import B

class X(object):
    pass
A.py:

MyTestModule.py:

from ModuleAlpha import X
尝试运行MyTestModule.py时,我收到以下错误:

from ModuleAlpha import X
ImportError:没有名为pymqi的模块

我理解为什么会出现导入错误。我的问题是:有没有办法绕过造成我问题的模块导入


值得一提的是,由于代码的编写方式,在模块A中注释掉pymqi的使用是不可能的。

因此,有两个答案。正确答案和错误答案

正确的答案是,向您的公司推销拥有与prod尽可能相似的pre-prod环境的好处。在prod中使用pre-prod中不可用的库是。。。。次优(“次优”是我礼貌的方式。诚实的话明显不那么礼貌)

错误的答案是捕捉异常。在这里,您可以采取几种方法

try:
    import pymqi
    HAVE_PYMQI = True
except ImportError:
    HAVE_PYMQI = False

if HAVE_PYMQI:
    blah()


显然,对于后一种错误的解决方案,您需要自己实现fakepymqi。

您有没有理由不能在测试环境中安装相同的软件包?这似乎是在乞求“使用模拟”的答案,但这实在太模糊了,坦白说,对于正确的答案来说很奇怪。最后一句似乎缺少一些单词。更新了最后一句。很遗憾,由于公司政策,我无法安装该软件包。事实上,我确实重写了代码,并且能够避免这种恐惧
try:
    import pymqi
except ImportError:
    import fakepymqi as pymqi