pytest --cov 告诉我我没有导入我拥有的东西
pytest --cov is telling me I haven't imported something that I have
这是我 运行 和我得到的:
me $ pytest --cov MakeInfo.py
================================================================================ test session starts =================================================================================
platform darwin -- Python 3.7.4, pytest-6.2.5, py-1.10.0, pluggy-0.13.0
rootdir: /Users/me/Documents/workspace-vsc/Pipeline/src/python
plugins: cov-2.12.1, arraydiff-0.3, remotedata-0.3.2, doctestplus-0.4.0, openfiles-0.4.0
collected 42 items
test_MakeInfo.py ............ [ 28%]
test_MakeJSON.py ... [ 35%]
test_convert_refflat_to_bed.py .. [ 40%]
test_generate_igv_samples.py ... [ 47%]
test_sample_info_to_jsons.py .... [ 57%]
read_coverage/test_intervaltree.py ......... [ 78%]
util/test_util.py ......... [100%]**Coverage.py warning: Module MakeInfo.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.
/Users/me/opt/anaconda3/lib/python3.7/site-packages/pytest_cov/plugin.py:271: PytestWarning: Failed to generate report: No data to report.
self.cov_controller.finish()
这是 test_MakeInfo.py 的顶部:
import pytest
import os
import sys
import json
import MakeInfo
from MakeInfo import main, _getNormalTumorInfo
我在找什么:告诉我 test_MakeInfo.py
中的测试涵盖了多少 MakeInfo.py
我得到的是:困惑
是不是我的指令错了? MakeInfo.py 没有任何调用,它是独立的并从命令行调用。所以当然 none 的其他测试包括它。
有没有办法告诉 pytest --cov 查看这个测试文件和源文件,而忽略其他所有内容?
尝试将调用更改为仅 python 模块名称 MakeInfo
而不是文件名称 MakeInfo.py
。或者,如果它位于内部子目录中,请使用点 .
表示法,例如some_dir.some_subdir.MakeInfo
pytest --cov MakeInfo
所以,在这种情况下,参数的顺序是关键
pytest test_MakeInfo.py --cov
在我的一个测试文件上运行 pytest,并为我提供一个源文件的覆盖率信息
pytest --cov test_MakeInfo.py
尝试 运行 针对每个测试文件(其中一个是我团队中的其他人编写的,并且显然使用了不同的测试工具,因此当 pytest 尝试 运行它)
pytest --cov MakeInfo
是其中的一部分:它 运行 是所有测试,包括失败的测试,但随后为我提供了我想要的覆盖率信息
如果您有多个针对单个源文件的测试文件,@Niel 的答案就是您想要的
这是我 运行 和我得到的:
me $ pytest --cov MakeInfo.py
================================================================================ test session starts =================================================================================
platform darwin -- Python 3.7.4, pytest-6.2.5, py-1.10.0, pluggy-0.13.0
rootdir: /Users/me/Documents/workspace-vsc/Pipeline/src/python
plugins: cov-2.12.1, arraydiff-0.3, remotedata-0.3.2, doctestplus-0.4.0, openfiles-0.4.0
collected 42 items
test_MakeInfo.py ............ [ 28%]
test_MakeJSON.py ... [ 35%]
test_convert_refflat_to_bed.py .. [ 40%]
test_generate_igv_samples.py ... [ 47%]
test_sample_info_to_jsons.py .... [ 57%]
read_coverage/test_intervaltree.py ......... [ 78%]
util/test_util.py ......... [100%]**Coverage.py warning: Module MakeInfo.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.
/Users/me/opt/anaconda3/lib/python3.7/site-packages/pytest_cov/plugin.py:271: PytestWarning: Failed to generate report: No data to report.
self.cov_controller.finish()
这是 test_MakeInfo.py 的顶部:
import pytest
import os
import sys
import json
import MakeInfo
from MakeInfo import main, _getNormalTumorInfo
我在找什么:告诉我 test_MakeInfo.py
中的测试涵盖了多少 MakeInfo.py我得到的是:困惑
是不是我的指令错了? MakeInfo.py 没有任何调用,它是独立的并从命令行调用。所以当然 none 的其他测试包括它。
有没有办法告诉 pytest --cov 查看这个测试文件和源文件,而忽略其他所有内容?
尝试将调用更改为仅 python 模块名称 MakeInfo
而不是文件名称 MakeInfo.py
。或者,如果它位于内部子目录中,请使用点 .
表示法,例如some_dir.some_subdir.MakeInfo
pytest --cov MakeInfo
所以,在这种情况下,参数的顺序是关键
pytest test_MakeInfo.py --cov
在我的一个测试文件上运行 pytest,并为我提供一个源文件的覆盖率信息
pytest --cov test_MakeInfo.py
尝试 运行 针对每个测试文件(其中一个是我团队中的其他人编写的,并且显然使用了不同的测试工具,因此当 pytest 尝试 运行它)
pytest --cov MakeInfo
是其中的一部分:它 运行 是所有测试,包括失败的测试,但随后为我提供了我想要的覆盖率信息
如果您有多个针对单个源文件的测试文件,@Niel 的答案就是您想要的