如何配置.coveragerc和setup.cfg,让pytest识别tests目录并执行测试
解决pytest找不到测试文件的配置方案
首先,你需要确保项目里安装了pytest-runner,它能让setuptools的test命令正确调用pytest。先安装它:
pip install pytest-runner
接下来,调整你的配置文件,分两个关键文件修改:
1. 配置setup.py
在setup.py里添加必要的依赖和测试套件配置,确保setuptools知道如何触发pytest:
from setuptools import setup, find_packages setup( name="package_name", version="0.1", packages=find_packages(), # 声明测试所需依赖 tests_require=["pytest", "coverage"], # 确保安装时先装pytest-runner setup_requires=["pytest-runner"], # 指定测试套件,让setuptools调用pytest test_suite="tests", )
2. 配置setup.cfg
这个文件是核心,要告诉pytest去哪里找测试文件,同时配置coverage的行为:
[metadata] name = package_name [options] packages = find: test_suite = tests [options.packages.find] where = package_name [pytest] # 指定测试文件所在目录 testpaths = tests # 可选:指定测试文件的命名规则,确保pytest能识别 python_files = test_*.py [coverage:run] # 指定要统计覆盖率的源代码目录 source = package_name # 确保覆盖测试命令触发的运行 branch = True [coverage:report] # 生成报告时显示详细信息 show_missing = True
3. 验证命令运行
现在你就可以用这条命令运行所有测试并生成覆盖率数据了:
coverage run setup.py test
运行完之后,还可以用这条命令查看覆盖率报告:
coverage report
如果还是有问题,可以检查以下几点:
- 确保tests目录下的测试文件都是以
test_开头的(pytest默认识别这个命名规则) - 确认package_name目录下的
__init__.py存在(哪怕是空文件),这样find_packages能正确识别包 - 检查是否在虚拟环境中运行,避免依赖冲突
内容的提问来源于stack exchange,提问作者Jonathan DEKHTIAR
相关产品推荐
相关产品推荐

