pytest无法识别新测试用例仅执行旧用例问题求助
解决pytest不识别新测试用例、误执行旧测试的问题
核心问题排查
- 测试函数命名不符合pytest规则:你的新测试文件
test_city_function.py里的函数名为check_pretty_formatted_city_country,pytest默认只会识别以test_开头的函数作为测试用例,这是它没被收集到的直接原因。 - pytest默认递归扫描所有子目录:即使把旧测试移到
Storico文件夹,pytest会自动遍历当前rootdir下的所有子目录,只要文件名符合test_*.py就会被执行。 - 执行pytest时未指定目标路径:在新文件夹执行pytest时,rootdir还是上级目录
/home/kko/Desktop/python_work,如果新文件夹里的测试文件没被正确扫描到,就会出现收集0个用例的情况。
具体解决步骤
1. 修改测试函数命名
把新测试文件里的函数名改成以test_开头,修改后的代码:
from city_function import pretty_city def test_check_pretty_formatted_city_country(): """验证字符串是否被正确格式化""" formatted_data = pretty_city('milano', 'italia') assert formatted_data == 'Milano, Italia'
2. 排除不需要扫描的目录(如Storico)
如果不想让pytest扫描旧测试所在的Storico文件夹,有两种方式:
- 临时执行时排除:
pytest --ignore=Storico - 永久配置:在项目根目录创建
pytest.ini文件,添加以下内容:[pytest] addopts = --ignore=Storico
3. 精确指定测试文件/目录执行
如果只想执行新测试文件,直接指定路径:
# 执行单个测试文件 pytest test_city_function.py # 执行新文件夹下的所有测试 pytest ./你的新文件夹名称/
4. 彻底清理缓存(补充步骤)
除了pytest --cache-clear,还可以手动删除缓存目录:
rm -rf .pytest_cache/
内容的提问来源于stack exchange,提问作者Kko_Viv
相关产品推荐
相关产品推荐

