使用nosetests和使用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。”排除任何内容,但它仍然说通过命令行给出的报告中缺少这些行。这使我很难确定在我的测试用例中我实际上未能涵盖哪些行。任何人都可以提供一些见解吗?
答案 0 :(得分:0)
您的.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
答案 1 :(得分:0)
找到解决我问题的方法。事实证明,我根本不需要使用nosetests
。我可以使用coverage.py
测试运行manage.py
并传入测试模块。代码覆盖率很好,我的覆盖率高达96%: - )