Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Coverage.py建议我需要测试一个重要的错误——我该怎么做?_Python_Django_Coverage.py - Fatal编程技术网

Python Coverage.py建议我需要测试一个重要的错误——我该怎么做?

Python Coverage.py建议我需要测试一个重要的错误——我该怎么做?,python,django,coverage.py,Python,Django,Coverage.py,刚开始使用,我正在进行测试 在我的一个python文件的顶部,我有以下内容(用于说明Django的不同版本): 当我运行coverage.py时,它突出显示最后两行(ImportError除外),并将其标记为需要测试 我如何在单元测试中测试它?我需要吗?我似乎不应该这样做,因为我没有测试所有其他导入。coverage.py是不是太兴奋了 谢谢~有些简单的代码行有时真的没有必要花时间为它们编写特定的测试。这段代码可能属于这一类 因此,您可以通过在希望被排除在覆盖范围之外的任何live旁边添加一条#

刚开始使用,我正在进行测试

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

当我运行
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