【发布时间】:2016-07-29 17:29:43
【问题描述】:
在使用鼻子测试和覆盖 Django Web 应用程序时遇到了一些代码覆盖率的小问题。我创建了一个 .coveragerc 文件来排除大量代码(例如类声明),但仍然得到一些奇怪的结果。
这是我的 .coveragerc 文件:
[run]
omit = ../*migrations*, ../*admin.py
[report]
show_missing = True
exclude_lines =
pragma: no cover
from
= models\.
这是 models.py 文件之一的示例:
from django.db import models
class Query(models.Model):
variable1 = models.CharField(max_length=100)
variable2 = models.CharField(max_length=100)
variable3 = models.CharField(max_length=100)
variable4 = models.CharField(max_length=100)
variable5 = models.CharField(max_length=100)
id = models.AutoField(primary_key=True)
def some_function(self):
self.variable1 = self.variable2 + self.variable3 + self.variable4 + self.variable 5
return self.variable1
因此,当我运行代码覆盖率时,我遇到的问题是,尽管我告诉覆盖率明确排除带有字符串“= models.”的任何内容,但它仍然说通过命令行给出的报告中缺少这些行。这使得很难确定我在测试用例中实际上没有涵盖哪些行。任何人都可以对此提供一些见解吗?
【问题讨论】:
-
如何运行测试而不运行模型定义行?如果覆盖显示它们没有运行,那么您可能运行覆盖错误,并且开始测量为时已晚。您试图排除“从”是同一问题的另一个迹象。不要试图排除这些行。早点运行覆盖。看到这个答案:stackoverflow.com/a/30653523/14343
-
好的,这样就解决了问题。我很欣赏另一个问题的链接。
标签: python django coverage.py