我有一个包,其中包含可选的库安装。当未安装该可选库并调用特定方法时,会引发一个自定义异常,提示未启用该功能需安装可选包。当可选库存在时,该方法才能被使用。
我希望使用pytest测试这两种情况。
我像这样导入库:
我希望使用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
是否被引发。我希望这样做是为了覆盖率的原因。