<分区>
我有一个安装了可选库的包。当可选库不存在并且调用特定方法时,会引发自定义异常,说明在没有安装可选包的情况下无法启用该功能。如果存在可选库,则可以使用该方法。
我想用 pytest 测试这两种情况。
我正在导入如下库:
try:
import derp
except ImportError:
pass
然后在函数中通过检查包是否在 sys.modules
中来检查是否安装了库。
def my_feature_method():
if 'derp' not in sys.modules:
raise Exception('this feature requires the derp package to be installed')
# do some stuff ...
我希望能够测试在 pytest 中安装了包 而没有 安装的情况。
编辑
目前我正在使用
with mock.patch.dict('sys.modules'):
del sys.modules['derp']
# run test
但这实际上并没有测试是否引发了 ImportError
。出于保险原因,我想要这个 😎