创建一个python unittest,其中不存在的模块被伪造

时间:2018-11-07 22:32:59

标签: python python-3.x

我有一段代码可以在许多不同的系统上运行。在某些系统上,模块pyodbc不存在,所以我退回到pymssql

我想在同时安装了这两个模块的环境中测试回退过程。

增加了难度:pyodbc不在我的代码中的任何地方导入,仅导入sqlalchemy内部。

库的细节无关紧要。我只是想避免必须运行pip来删除和更换pyodbc模块,然后必须进行两次测试。

有什么办法欺骗缺少的模块?

1 个答案:

答案 0 :(得分:1)

您可以通过sys.modules来伪装缺少模块:

>>> import sys
>>> sys.modules['pyodbc'] = None
>>> import pyodbc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: import of 'pyodbc' halted; None in sys.modules

(从this answer窃取)