Nosetests 和 Coverage 不排除线路
Nosetests and Coverage not excluding lines
运行 变成一个小问题,使用 nosetests 覆盖一些代码,用 Django web 应用程序覆盖。我创建了一个 .coveragerc 文件来排除大量代码(例如 class 声明),但我仍然得到一些奇怪的结果。
这是我的 .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.”的内容,它仍然说这些行是通过命令行给出的报告中缺少。这使得很难确定我在测试用例中实际上没有覆盖哪些行。谁能对此提供一些见解?
您的 .coveragerc
文件应列出要排除的内容,从目录的根目录开始。
例如:
proj
|-- app1
|
-- models.py
-- migrations.py
|-- app2
那么您的 coverage.rc
文件应该如下所示:
[run]
omit = app1/migrations.py, app1/admin.py
或
[run]
omit = proj/*/migrations.py, proj/*/admin.py
找到了我的问题的解决方案。事实证明我根本不需要使用 nosetests
。我可以简单地 运行 coverage.py
和 manage.py
测试并通过测试模块。代码覆盖率非常好,我的覆盖率高达 96% :-)
运行 变成一个小问题,使用 nosetests 覆盖一些代码,用 Django web 应用程序覆盖。我创建了一个 .coveragerc 文件来排除大量代码(例如 class 声明),但我仍然得到一些奇怪的结果。
这是我的 .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.”的内容,它仍然说这些行是通过命令行给出的报告中缺少。这使得很难确定我在测试用例中实际上没有覆盖哪些行。谁能对此提供一些见解?
您的 .coveragerc
文件应列出要排除的内容,从目录的根目录开始。
例如:
proj
|-- app1
|
-- models.py
-- migrations.py
|-- app2
那么您的 coverage.rc
文件应该如下所示:
[run]
omit = app1/migrations.py, app1/admin.py
或
[run]
omit = proj/*/migrations.py, proj/*/admin.py
找到了我的问题的解决方案。事实证明我根本不需要使用 nosetests
。我可以简单地 运行 coverage.py
和 manage.py
测试并通过测试模块。代码覆盖率非常好,我的覆盖率高达 96% :-)