pytest 常见命令
时间: 2025-05-26 14:26:28 浏览: 29
### Pytest 常见命令及用法
#### 测试结果显示控制
Pytest 提供多种选项来调整测试结果的显示方式。`--tb` 参数用于设置回溯信息的详细程度,常见的参数有 `long`, `no`, `short`, `line`, 和 `native`。
- 使用 `-v --tb=long` 可以获得完整的错误堆栈信息[^1]。
- 如果不需要任何错误详情,则可以通过 `-v --tb=no` 来隐藏这些信息。
- 对于简化的错误描述,可以选择 `-v --tb=short` 或者更简洁的方式使用 `-v --tb=line`。
- 特殊情况下,如果希望查看原生 Python 的错误跟踪格式并保持一定的可读性,推荐使用 `pytest --tb=native`。
#### 断言机制
Pytest 支持标准断言语法以及扩展假设功能:
- 当普通的 `assert` 表达式失败时,其后的代码将不再被执行[^2]。
- 而通过调用 `pytest.assume()` 方法实现软断言,在单次测试中允许多次验证条件而不中断流程[^2]。
#### 测试状态管理
不同的测试结果可以用特定字符表示以便快速识别:
- 成功完成的测试会被标记为 `. (PASSED)`[^3];
- 出现问题的测试则标注为 `F (FAILED)`[^3];
- 若某些条件下无需实际运行某个测试案例,可以利用装饰器将其设为跳过的状态 `s(SKIPPED)`,这可通过 `@pytest.mark.skip()` 实现;
- 预期失败但仍需保留记录的情况适用 `x(XFAIL)` 标记,对应的是即使失败也被视为正常的行为模式[^3];
- 不同寻常的情形下发生的非预期成功事件被定义为 `X(PASS)`[^3];
- 此外还有因程序逻辑缺陷引发异常而导致的整体过程崩溃情况下的 E(ERROR)[^3]。
#### 生命周期钩子函数配置
在复杂项目里可能涉及到资源初始化与清理工作,这时就需要运用到 setup/teardown 类型的方法了:
- 整个项目范围内生效的一次性准备工作由 `setup_module` 完成;随后针对每一个类实例分别执行各自的构造部分即 `setup_class`;接着逐个处理各个独立的功能单元之前先做好前置准备动作也就是所谓的 `setup_function`;最后才是真正的测试主体本身—— testcase[]。
```python
def setup_module(module):
"""整个模块只运行一次"""
class TestClassExample(object):
@classmethod
def setup_class(cls):
"""每个类前仅运行一次"""
def teardown(self):
"""每次方法之后都会运行"""
def test_example(self):
assert True == False
```
---
阅读全文
相关推荐


















