【基础】pytest的测试发现与运行机制
发布时间: 2024-06-25 22:32:07 阅读量: 79 订阅数: 131
自动化测试-pytest框架相关资料下载
![【基础】pytest的测试发现与运行机制](https://img-blog.csdnimg.cn/direct/b35abd7faf5647b6b0f57af50d1671f8.jpeg)
# 2.1 测试用例的发现原理
pytest使用约定优于配置的原则来发现测试用例。它遵循以下规则:
- 任何以`test_`开头的函数或类方法都被视为测试用例。
- 测试用例可以位于任何文件或目录中,但通常放置在`tests`目录下。
- 测试用例可以分组到测试类中,以组织和重用测试逻辑。
# 2. pytest测试发现机制
### 2.1 测试用例的发现原理
pytest通过以下两种方式发现测试用例:
#### 2.1.1 conftest.py文件的作用
conftest.py文件是一个特殊的Python模块,它位于测试目录或其父目录中。pytest会自动加载conftest.py文件,并执行其中的代码。conftest.py文件可以用来定义全局的fixtures、自定义的标记以及其他测试配置。
**示例:**
```python
# conftest.py
import pytest
@pytest.fixture
def my_fixture():
return 10
```
#### 2.1.2 pytest.fixture装饰器的用法
pytest.fixture装饰器用于定义fixtures。fixtures是特殊的函数,它们在测试用例运行之前运行,并向测试用例提供数据或资源。pytest会自动发现带有@pytest.fixture装饰器的函数,并将其注册为fixtures。
**示例:**
```python
# test_example.py
import pytest
@pytest.fixture
def my_fixture():
return 10
def test_example(my_fixture):
assert my_fixture == 10
```
### 2.2 测试用例的过滤和选择
pytest提供了多种方法来过滤和选择要运行的测试用例:
#### 2.2.1 使用命令行参数进行过滤
pytest命令行参数可以用来过滤测试用例。例如:
* **-k:** 根据测试用例名称进行过滤。
* **-m:** 根据标记进行过滤。
* **--collect-only:** 仅发现测试用例,而不运行它们。
**示例:**
```bash
pytest -k "test_example"
```
#### 2.2.2 使用pytest.mark装饰器进行标记
pytest.mark装饰器可以为测试用例添加标记。标记可以用来分组测试用例,并根据标记进行过滤。
**示例:**
```python
# test_example.py
import pytest
@pytest.mark.fast
def test_example():
pass
```
# 3. pytest测试运行机制
### 3.1 测试用例的执行顺序
**3.1.1 fixture的执行顺序**
pytest中,fixture的执行顺序由其作用域决定。作用域越小的fixture,执行优
0
0