为什么我的大部分项目';PyTest覆盖率报告中缺少s Django文件?
我正在运行为什么我的大部分项目';PyTest覆盖率报告中缺少s Django文件?,django,pytest,coverage.py,pytest-django,pytest-cov,Django,Pytest,Coverage.py,Pytest Django,Pytest Cov,我正在运行pytestcov和pytestdjango使用tox。我有一个非常简单的tox.ini文件,其中包含有限的省略文件。问题是,当我使用tox-e单元运行pytest时,我会得到一个有限的覆盖率报告: ---------- coverage: platform darwin, python 3.7.4-final-0 ----------- Name Stmts Miss Cover Missi
pytestcov
和pytestdjango
使用tox
。我有一个非常简单的tox.ini
文件,其中包含有限的省略文件。问题是,当我使用tox-e单元运行pytest
时,我会得到一个有限的覆盖率报告:
---------- coverage: platform darwin, python 3.7.4-final-0 -----------
Name Stmts Miss Cover Missing
----------------------------------------------------------------------------
components/__init__.py 0 0 100%
components/client/__init__.py 0 0 100%
components/client/admin.py 27 0 100%
components/client/factories.py 57 0 100%
components/client/models.py 62 0 100%
components/controller/__init__.py 0 0 100%
components/controller/admin.py 62 6 90% 96-97, 109-110, 122-123
components/controller/management/__init__.py 0 0 100%
components/controller/models.py 107 6 94% 19, 31, 54, 92, 105, 132
components/personal/__init__.py 0 0 100%
components/personal/admin.py 24 0 100%
components/personal/factories.py 39 0 100%
components/personal/models.py 81 16 80% 23, 36, 49, 62, 72, 75-76, 92-104
server/__init__.py 3 0 100%
server/celery.py 10 1 90% 30
server/config/__init__.py 1 0 100%
server/settings.py 52 0 100%
server/test.py 56 33 41% 16-19, 43, 48-49, 63-88, 94-105, 112-115
----------------------------------------------------------------------------
TOTAL 589 62 89%
组件
下的所有Django应用程序都有许多文件应在报告中介绍,包括应用程序
,序列化程序
,信号
,URL
,以及视图
(标准Django结构)。有人知道我错过了什么吗?我在tox.ini
中得到的一切似乎都与我在pytest
、pytest django
、pytest cov
和coverage
的各种文档中读到的内容非常相似,但我肯定错过了一些重要的东西
tox.ini
[tox]
; The only reason we'd want to `sdist` is if we distributed this as a Python package in PyPI, so let's skip it:
skipsdist = True
envlist =
{py37}-django{2}
lint
skip_missing_interpreters = true
[testenv]
whitelist_externals = *
passenv = *
deps = -rrequirements-test.txt
commands = {[testenv:unit]commands}
[testenv:unit]
deps = {[testenv]deps}
commands = pytest {posargs:--cov=project-name}
[pytest]
DJANGO_SETTINGS_MODULE = server.settings
python_files = tests.py test_*.py *_tests.py
addopts =
-v -s
--color=yes
--cov
--cov-append
--cov-report=term-missing
--cov-config=tox.ini
[coverage:report]
show_missing = True
omit =
*/usr/*
*/.tox/*py
*/.virtualenvs/*
*/migrations/*
*/tests/*
[report]
omit =
*/usr/*
*/.tox/*
*/migrations/*
*/tests/*
答案似乎非常琐碎和明显,但令人惊讶的是,这是很难得到的<代码>覆盖率
仅报告实际运行的代码。因此,如果您的测试没有调用一点代码,并且在应用程序的正常加载过程中它没有运行,coverage
将不会显示该代码的报告。不运行的代码不会导致错误:)答案似乎很简单,很明显,但令人惊讶的是,很难找到答案<代码>覆盖率
仅报告实际运行的代码。因此,如果您的测试没有调用一点代码,并且在应用程序的正常加载过程中它没有运行,coverage
将不会显示该代码的报告。未运行的代码不会导致错误:)根据Coverage.py文档:
只考虑可导入的文件(位于树的根目录下的文件,或位于具有\uuuu init\uuuuuuu.py
文件的目录中的文件)
因此,您必须确保代码由测试执行,或者根据Coverage.py文档确保代码所在的目录具有
\uuuu init\uuuuu.py
:
只考虑可导入的文件(位于树的根目录下的文件,或位于具有\uuuu init\uuuuuuu.py
文件的目录中的文件)
因此,您必须确保代码是由测试执行的,或者确保代码所在的目录具有\uuu init\uuu.py