pytest框架testcase
时间: 2025-03-27 15:36:55 浏览: 43
### 使用 Pytest 框架编写测试用例
#### 创建测试文件
为了遵循 Python 的命名约定,通常创建以 `test_` 开头的模块名或以 `_test` 结尾的方法名称作为测试文件。这些文件会被 pytest 自动识别。
#### 定义测试类与方法
定义一个名为 `TestDemo` 的测试类来封装一组逻辑上相关的测试函数:
```python
class TestDemo:
def test_demo1(self):
print('----测试用例执行-----------')
assert 11 == 11 # 断言条件成立则通过此条目[^1]
```
上述代码展示了最基础形式的一个测试案例实现;其中包含了打印语句用于调试目的以及简单的相等性断言验证两个数值是否相同。
#### 单独执行特定测试方法
如果希望仅针对某个具体的功能点进行独立检测而不影响其他部分,则可以通过命令行指定路径加双冒号分隔符连接到目标测试项的方式调用它:
```bash
pytest path/to/test_class.py::TestClass::test_functionality
```
这条指令会告诉 pytest 只运行位于给定位置下的 `TestClass` 类里的 `test_functionality()` 方法[^2]。
#### 设置前置和后置操作 (Setup 和 Teardown)
对于需要重复使用的初始化资源或者清理工作的场景下,可以利用 setup/teardown 功能完成每轮迭代前后的准备工作:
- **setup_method() / teardown_method():** 针对每一个实例级别的设置与销毁动作;
- **setup_class() / teardown_class():** 整个类加载期间只会被触发一次的操作,适合于那些耗时较长的任务比如打开关闭数据库链接等[^3].
下面是一个完整的例子展示如何结合以上特性构建更加复杂的测试环境配置:
```python
import pytest
@pytest.fixture(scope="module")
def resource():
"""模拟外部依赖注入"""
yield "resource"
# 清理工作...
class TestCase:
@classmethod
def setup_class(cls):
print("\n执行setup_class")
@classmethod
def teardown_class(cls):
print("\n执行teardown_class")
def setup_method(self, method):
print(f"\n开始 {method.__name__}")
def teardown_method(self, method):
print(f"\n结束 {method.__name__}")
def test001(self, resource):
print("\n执行用例1 >>>>>>>>>>>>")
assert True
def test002(self, resource):
print("\n执行用例2 >>>>>>>>>>>>")
assert True
```
在此基础上还引入了一个 fixture 来管理跨多个测试之间的共享状态——即所谓的“资源”。这种方式不仅提高了代码可读性和维护便利度,同时也使得不同组件间的协作变得更加灵活高效[^4]。
阅读全文
相关推荐


















