pytest执行的时候,提示:collected 0 items,自己的用例为什么没有被执行呢?原因有4个

当pytest执行时显示collected0items,可能是由于测试脚本的命名问题导致的。如脚本重命名后未更新引用,类名未以Test开头,或者测试用例及方法名未遵循‘test_’前缀规则。确保这些条件满足,才能使pytest正确识别并执行测试用例。

pytest执行的时候,提示:collected 0 items,自己的用例为什么没有被执行呢?原因有4个

pytest测试用例执行过程中,没选择到想要执行的用例,可能原因我遇到了3种,如下一一总结下:

1、测试脚本重命名之后,可能执行不到该用例,比如:test_add.py就没有被执行,原因:被改过了脚本名称

2、脚本里如果使用了类,没有使用Test开头命名

3、测试用例命名没有以“test_”开头命名,所以不会执行。pytest执行用例的是,仅执行以“test_”开头命名的用例,不然找不到
在这里插入图片描述

3、测试用例是以“test_” 开头命名的,但是用例里边的测试方法命名没有以“test_” 开头命名,所以找不到。

如下以test_1.py为例具体说明:

(1)这样的就不会被执行,因为方法名的原因
在这里插入图片描述

(2)这样的才会被执行
在这里插入图片描述

在使用 `pytest` 框架进行测试时,执行多条测试用例是一个非常常见的需求。`pytest` 天然支持执行多个测试用例,只要它们符合命名规范(如以 `test_` 开头的函数或类方法),并且在指定的目录中。 --- ### 一、执行多条测试用例的方法 #### 1. 执行整个目录下的所有测试用例 ```bash pytest tests/ ``` 这会递归查 `tests/` 目录下所有符合 `test_*.py` 或 `*_test.py` 命名规范的测试文件,并执行其中所有以 `test_` 开头的函数或方法。 #### 2. 执行某个文件中的所有测试用例 ```bash pytest tests/test_login.py ``` 这会执行 `test_login.py` 文件中所有符合命名规范的测试用例。 #### 3. 执行某个类中的所有测试用例(类形式) ```python # test_example.py class TestLogin: def test_login_success(self): assert True def test_login_fail(self): assert False ``` 执行这个类中的所有方法: ```bash pytest tests/test_example.py::TestLogin ``` #### 4. 执行某一个具体的测试用例 ```bash pytest tests/test_example.py::TestLogin::test_login_success ``` #### 5. 使用 `-v` 参数查看详细执行信息 ```bash pytest -v ``` 这会显示每个测试用例执行结果(成功/失败)。 #### 6. 使用 `-k` 参数按名称匹配执行测试用例 ```bash pytest -v -k "login" ``` 这会执行所有名称中包含 "login" 的测试用例。 #### 7. 使用 `@pytest.mark` 标记执行特定测试用例 ```python # test_marks.py import pytest @pytest.mark.smoke def test_login_smoke(): assert True @pytest.mark.regression def test_login_regression(): assert True ``` 执行所有 `smoke` 标记的用: ```bash pytest -v -m smoke ``` > 注意:首次使用 `@pytest.mark` 需要在 `pytest.ini` 中注册标记,避免警告: ```ini [pytest] markers = smoke: 标记冒烟测试 regression: 标记回归测试 ``` --- ### 二、pytest 执行多用的原理 `pytest` 是基于发现机制的测试框架,它会自动发现项目中所有符合命名规范的测试模块、测试类和测试函数。通过命令行参数可以灵活地控制执行哪些测试用例。 --- ### 三、执行测试的完整示 #### 示目录结构: ``` tests/ ├── test_login.py ├── test_register.py └── test_profile.py ``` #### 示测试文件内容: ```python # test_login.py def test_login_success(): assert True def test_login_failure(): assert False ``` #### 执行所有测试: ```bash pytest -v ``` #### 输出示: ``` ============================= test session starts ============================== collected 2 items test_login.py::test_login_success PASSED [ 50%] test_login.py::test_login_failure FAILED [100%] =========================== 1 passed, 1 failed in 0.12s ============================ ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值