Python Coverage.py建议我需要测试一个重要的错误——我该怎么做?
刚开始使用,我正在进行测试 在我的一个python文件的顶部,我有以下内容(用于说明Django的不同版本): 当我运行Python Coverage.py建议我需要测试一个重要的错误——我该怎么做?,python,django,coverage.py,Python,Django,Coverage.py,刚开始使用,我正在进行测试 在我的一个python文件的顶部,我有以下内容(用于说明Django的不同版本): 当我运行coverage.py时,它突出显示最后两行(ImportError除外),并将其标记为需要测试 我如何在单元测试中测试它?我需要吗?我似乎不应该这样做,因为我没有测试所有其他导入。coverage.py是不是太兴奋了 谢谢~有些简单的代码行有时真的没有必要花时间为它们编写特定的测试。这段代码可能属于这一类 因此,您可以通过在希望被排除在覆盖范围之外的任何live旁边添加一条#
coverage.py
时,它突出显示最后两行(ImportError除外),并将其标记为需要测试
我如何在单元测试中测试它?我需要吗?我似乎不应该这样做,因为我没有测试所有其他导入。coverage.py
是不是太兴奋了
谢谢~有些简单的代码行有时真的没有必要花时间为它们编写特定的测试。这段代码可能属于这一类
因此,您可以通过在希望被排除在覆盖范围之外的任何live旁边添加一条#pragma nocover
注释来指示覆盖范围忽略它。请注意,在引入块的行(例如if
语句)上添加此项将删除整个块
参考:。测试替代导入的最简单方法是首先记住为什么要有那行代码。评论说,“旧版本”。我猜这意味着Django的旧版本。所以您支持较旧的版本,但看起来您没有使用它们进行测试
您应该在您支持的所有Django版本上运行测试套件,或者至少在最旧和最新版本上运行测试套件。然后,您可以组合每次运行的覆盖率结果。如果您这样做,这些行都将被覆盖。在我看来,您可以在shell中尝试这两种导入语句,看看它们是否都有效。无工作意味着测试失败。@Mai-是的,他们确实工作;然而,我想把它放在我的单元测试中,但不知道如何编写它。从功能的角度来看,它们是有效的。依赖关系不应该在测试中检查,而应该在运行时检查。您可以将模块中的每个导入脚本包装在一个try语句中,并在每个导入失败时打印消息。当两者都失败时,请优雅地终止该过程。感谢您对我是否需要测试它的意见。谢谢。我希望有人也能在单元测试中展示如何做到这一点。欢迎,我当然理解。我也很好奇。这听起来绝对是正确的答案。事实上,我正在使用tox
对Python和Django的多个版本运行测试。我将使用coverage.py
,看看如何组合运行——它显然只显示了最后一次运行。
try: # newer versions
from django.contrib.contenttypes.fields import GenericForeignKey
except ImportError: # older versions
from django.contrib.contenttypes.generic import GenericForeignKey