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 的答案就是您想要的