Coverage.py 建议我需要测试 ImportError - 我该怎么做?

Coverage.py suggests I need to test for an ImportError -- how do I do that?

刚开始使用 coverage.py 并且正在进行测试!

在我的 python 个文件的顶部,我有以下内容(用于说明 Django 的不同版本):

try: # newer versions
    from django.contrib.contenttypes.fields import GenericForeignKey 
except ImportError: # older versions
    from django.contrib.contenttypes.generic import GenericForeignKey 

当我 运行 coverage.py 它突出显示最后两行(except ImportError)并将其标记为需要测试。

如何在我的单元测试中测试它?我需要吗?我似乎不应该,因为我没有测试所有其他进口产品。 coverage.py 是不是太兴奋了?

谢谢~

有些简单的代码行有时真的没有意义花时间为它们编写特定的测试。可能这段代码就属于这一类。

因此,您可以通过在您希望从报道中排除的任何直播旁边添加 # pragma nocover 评论来指示报道忽略它。请注意,将此添加到引入块的行(例如 if 语句),它将排除整个块。

参考:Excluding code from coverage.

测试备用导入的最简单方法是记住为什么您首先拥有该行代码。评论说,"older versions." 我猜这意味着旧版本的 Django。所以你支持旧版本,但看起来你没有用它们进行测试。

您应该 运行 您的测试套件适用于您支持的所有 Django 版本,或者至少是最旧和最新版本。然后,您可以合并每个 运行 的覆盖率结果。如果这样做,这些行将全部被覆盖。