[英]pytest-cov showing no coverage
我有一个名为 CorGE 的 python 库,其结构如下
我正在尝试使用 pytest-cov 生成覆盖率报告。 我见过的每个示例/文档都是这样的
pytest CorGE/tests/ --cov CorGE/
或这个
python -m coverage run --source=CorGE/src/CorGE -m pytest CorGE/tests/
但这会产生 NoCoverageWarning
CoverageWarning: No data was collected. (no-data-collected)
和这样的报告
Name Stmts Miss Cover
-------------------------------------------
src/CorGE/__init__.py 0 0 100%
src/CorGE/collect.py 127 127 0%
-------------------------------------------
TOTAL 127 127 0%
我只是误解了如何使用这个覆盖工具吗? 我花了一整天的时间尝试这些命令的不同变体,但似乎没有任何效果。 希望了解更多有关此的人的任何见解。
这是测试文件,以防万一出现问题,比如没有正确调用 src 文件或其他什么。
import os
import shutil
import tempfile
import unittest
from CorGE.command import main
class CommandTests(unittest.TestCase):
def setUp(self):
self.temp_dir = tempfile.mkdtemp()
# collect_genomes input
self.data_dir = os.path.join('/'.join(__file__.split('/')[:-1]), "test-data")
self.ncbi_species_fp = os.path.join(self.data_dir, "TEST_TXIDS")
self.ncbi_accessions_fp = os.path.join(self.data_dir, "TEST_ACCS")
self.local_db_fp = os.path.join(self.data_dir, "TEST_LOCAL/")
# collect_genomes outputs
self.nucl_fp = os.path.join(self.temp_dir, "nucleotide/")
self.prot_fp = os.path.join(self.temp_dir, "protein/")
self.outgroup_fp = os.path.join(self.temp_dir, "outgroup/")
def tearDown(self):
shutil.rmtree(self.temp_dir)
def test_collect_genomes(self):
main([
"collect_genomes",
self.temp_dir,
"--ncbi_species", self.ncbi_species_fp,
"--ncbi_accessions", self.ncbi_accessions_fp,
"--local", self.local_db_fp,
# --outgroup left as default "2173"
])
self.assertEqual(os.listdir(self.outgroup_fp).sort(), ['GCF_000016525.1.faa', 'GCF_000016525.1.fna'].sort())
self.assertEqual(os.listdir(self.nucl_fp).sort(), ['GCF_000012885.1.fna', 'GCF_000007725.1.fna', 'GCF_000020965.1.fna',\
'GCF_001735525.1.fna', 'GCF_007197645.1.fna', 'GCF_001375595.1.fna', 'GCF_000218545.1.fna', 'GCF_000010525.1\n.fna',\
'GCF_000378225.1.fna', 'GCF_900111765.1.fna', 'GCF_023159115.1.fna'].sort())
self.assertEqual(os.listdir(self.prot_fp).sort(), ['GCF_000012885.1.faa', 'GCF_000007725.1.faa', 'GCF_000020965.1.faa',\
'GCF_001735525.1.faa', 'GCF_007197645.1.faa', 'GCF_001375595.1.faa', 'GCF_000218545.1.faa', 'GCF_000010525.1\n.faa',\
'GCF_000378225.1.faa', 'GCF_900111765.1.faa', 'GCF_023159115.1.faa'].sort())
if __name__ == "__main__":
unittest.main()
好的,我想出了如何完成这项工作,但我对我的解决方案完全不满意。 我所做的更改是在开发模式下安装CorGE
,而不是通常使用pip install -e .
然后一切都开始工作了。
我现在正在运行pytest --cov .
从根CorGE
目录并获取:
---------- coverage: platform linux, python 3.10.2-final-0 -----------
Name Stmts Miss Cover
-------------------------------------------
setup.py 2 2 0%
src/CorGE/__init__.py 0 0 100%
src/CorGE/collect.py 127 19 85%
src/CorGE/command.py 43 5 88%
src/CorGE/extract.py 193 167 13%
src/__init__.py 0 0 100%
tests/__init__.py 0 0 100%
tests/test_command.py 35 1 97%
-------------------------------------------
TOTAL 400 194 52%
为什么会这样,我不知道。 为什么没有这个它不起作用,我不知道更多。 希望这可以帮助其他人在未来对此感到沮丧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.