作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从这个线程运行了一个示例代码。
How to properly use coverage.py in Python?
但是,当我执行此命令时 py.test test.py --cov=sample.py
它给了我一个警告,因此没有创建任何报告。
platform linux2 -- Python 2.7.12, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
rootdir: /media/sf_Virtual_Drive/ASU/CSE565_testand
validation/Assignments/temp, inifile:
plugins: cov-2.5.1
collected 3 items
test.py ...Coverage.py warning: Module sample.py was never imported. (module-not-imported)
Coverage.py warning: No data was collected. (no-data-collected)
coverage.py
不工作?
coverage run -m py.test test.py
单独地,它没有显示任何警告。
最佳答案
tl;博士
使用coverage
生成统计文件.coverage
然后创建一个仅适用于您的特定文件的报告。
coverage run -m pytest .\test\test_named_prng.py
coverage html --include=named_prng.py
情况
test/test_named_prng.py
) 中也有测试用例。您想在包中的一个特定文件 (
named_prng.py
) 上测量测试文件的代码覆盖率。
\namedPrng
│ examples.py
│ named_prng.py
│ README.md
│ timeit_meas.py
│ __init__.py
│
└───test
test_named_prng.py
__init__.py
这里
namedPrng/__init__.py
进口
examples.py
和
named_prng.py
,其中另一个初始化文件为空。
pytest
或与
coverage
您无法将报告范围限定为您的特定文件 (
named_prng.py
),因为从您的包中导入的所有其他文件也包含在报告中。
__init__.py
在要导入的模块所在的层级,然后
__init__.py
__init__.py
可能会导入比必要更多的文件将被执行。有一些选项可以告诉 pytest 和 coverage 以限制您要调查的模块,但如果它们涉及您包中的其他模块,它们也会被分析。
--cov
包的
pytest-cov
, 如果您发出
pytest
带有选项
--cov
, 如果您要创建覆盖测试的(子)模块是从
__init__.py
导入的,则不起作用.
namedPrng
)
pytest .\test\test_named_prng.py --cov --cov-report=html
您将每
.py
收到一份报告文件,除了
timeit_meas.py
,因为它从未被导入:测试、init 和导入的
named_prng.py
也没有。 ,也不是它的初始化。
pytest .\test\test_named_prng.py --cov=./ --cov-report=html
然后你明确告诉
coverage
(使用
pytest
调用)以包含关卡中的所有内容,因此每个
.py
文件将包含在报告中。
named_prng.py
的源代码上创建报告。 , 但是如果你将你的模块指定为
--cov
和
pytest .\test\test_named_prng.py --cov=named_prng --cov-report=html
或与
--cov=named_prng.py
你会得到一个警告:
Coverage.py warning: Module named_prng.py was never imported. (module-not-imported)
Coverage.py warning: No data was collected. (no-data-collected)
WARNING: Failed to generate report: No data to report.
coverage
的症状
coverage run -m pytest .\test\test_named_prng.py
coverage html
您会在 5
.py
上获得相同的报告文件。如果你试图告诉
coverage
仅使用
named_prng.py
经过
coverage run --source=named_prng -m pytest .\test\test_named_prng.py
或与
--source=named_prng.py
, 你会收到警告
Coverage.py warning: Module named_prng.py was never imported. (module-not-imported)
Coverage.py warning: No data was collected. (no-data-collected)
并且不会创建任何报告。
--include
切换
coverage
不幸的是,它不能传递给
pytest
在 CLI 中。
coverage
命令行界面
coverage run --include=named_prng.py -m pytest .\test\test_named_prng.py
coverage html
或在报告时。
coverage run -m pytest .\test\test_named_prng.py
coverage html --include=named_prng.py
使用
pytest
+ 设置文件
pytest
通过配置文件进行详细配置。您在哪里发出
pytest
,设置
.coveragerc
包含内容的文件
[run]
include = named_prng.py
查看
coverage's description关于可能的选项和模式。
关于pytest - py.test 给出 Coverage.py 警告 : Module sample. py 从未导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46652192/
背景 我最近在 merge 期间遇到了一个意外未 merge 的文档文件的问题。 无论出于何种原因,我搞砸了 merge 并有效地删除了文件(和其他几个文件),因为我忘记了它们的存在。 现在我想查看我
我在我的网站上使用旧的 mysql 版本和 php 版本 4。 我的表结构: | orders_status_history_id | orders_id | orders_status_id |
我是一名优秀的程序员,十分优秀!