使用pytest执行test_login.py时显示“Collected 0 items”求助
解决pytest收集0个测试用例的问题
一、再次核对命名规则(别嫌麻烦,再仔细过一遍)
- 确认测试文件名和命令里的路径大小写一致:类Unix系统(Linux/macOS)区分大小写,如果你实际文件名是
test_login.py,命令里写成test_Login.py会匹配失败;Windows系统不区分,但统一大小写更稳妥 - 测试类必须以
Test开头,且不能定义__init__方法,比如TestLogin是合法的,LoginTest则不被pytest识别 - 测试方法/函数必须以
test_开头,比如test_valid_login,不能写成valid_login_test
二、检查路径与运行目录
- 确保你的项目结构符合预期,比如:
项目根目录/ TestCases/ test_login.py - 必须在项目根目录下执行命令,或者给路径加上明确的相对前缀,比如
pytest -v -s ./TestCases/test_login.py - 如果
TestCases是Python包,要确保文件夹里有__init__.py文件(空文件即可)
三、检查代码结构是否符合要求
你的test_login.py代码结构应该类似下面的合法示例,隐性的结构问题会导致pytest无法识别用例:
# 合法示例1:测试类+测试方法 class TestLogin: def test_valid_credentials(self): # 测试逻辑 assert True def test_invalid_password(self): # 测试逻辑 assert False # 合法示例2:直接定义测试函数 def test_empty_username_login(): # 测试逻辑 assert False
- 检查是否有语法错误(虽然没报错,但隐性的缩进、括号缺失等问题也可能导致用例不被识别)
- 删除项目里的
__pycache__和.pytest_cache文件夹,缓存异常可能干扰用例收集
四、其他排查手段
- 运行
pytest -v --collect-only TestCases/test_login.py,这个命令会只执行用例收集过程,输出详细的识别日志,能帮你定位到底哪一步出了问题 - 检查测试用例是否被
@pytest.mark.skip/@pytest.mark.skipif装饰器标记跳过 - 升级pytest到最新稳定版:
pip install --upgrade pytest,旧版本可能存在规则兼容问题
内容的提问来源于stack exchange,提问作者Niteesh Kumar
相关产品推荐
相关产品推荐

