我想引起麻烦

2024-09-28 19:25:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用我正在编写的代码达到100%的测试覆盖率。但是,下面的代码块给我带来了麻烦。在

try:
    from south.modelsinspector import add_introspection_rules
    add_introspection_rules([], ["^localized_recurrence\.duration_field\.DurationField"])
except ImportError:
    pass

上面的代码是我正在测试的模块的一部分。我需要在ImportError分支之后创建一个测试(不修改上面的代码)。在

当我只在测试中编写代码时,如何以编程方式使ImportError发生?在


Tags: 代码fromimportaddfield覆盖率localizedrules
2条回答

您可以更改测试的^{}。例如:

>>>import bs4
>>>

>>>import sys
>>>p=sys.path
>>>sys.path=['']
>>>import bs4

ImportError: No module named bs4

>>>sys.path=p
>>>import bs4
>>>

只需修改sys.pathsetUp()上的特定测试,然后在{}上恢复它。在

希望这有帮助!在

我会尝试修补sys.modules并用一个模拟模块替换{}。在

{参考^ a1。在

In [1]: from re import sub

In [2]: import sys

In [3]: sys.modules['re'] = {}

In [4]: from re import sub
                                     -
ImportError                               Traceback (most recent call last)
/home/kos/codility/frontend_v2/<ipython-input-4-6d4794835d43> in <module>()
  > 1 from re import sub

ImportError: cannot import name sub

您可以使用mock.patch.dict(作为测试装饰器或上下文管理器)在狭窄的上下文中执行此操作:

^{pr2}$

相关问题 更多 >