Pytest 跳过测试技巧:灵活控制哪些测试该跑、哪些该跳过
概述
在编写自动化测试时,有时我们希望临时跳过某些测试用例,比如:
- 功能尚未完成
- 某些环境不支持该测试(如仅限 Linux)
- 已知的 bug 正在修复中
Pytest 提供了非常方便的机制来实现这一点 —— @pytest.mark.skip
和 @pytest.mark.skipif
装饰器。它们可以帮助你根据条件灵活地跳过测试。
什么是跳过测试
跳过测试(Skipping Tests) 是指在执行测试过程中,有意识地跳过某些测试用例,使其不被执行,也不会被视为失败或成功。
这在以下场景中非常有用:
- 功能开发中,还未实现的功能。
- 测试依赖特定环境(如数据库、网络等),当前不具备条件。
- 已知问题等待修复,暂时不需要运行。
常见跳过方式介绍
1. 无条件跳过:@pytest.mark.skip
适用于总是要跳过的测试,无论什么情况。
import pytest@pytest.mark.skip(reason="功能尚未完成")
def test_add():assert 1 + 1 == 2
执行结果中会显示为:
SKIPPED [1] test_skip.py::test_add: 功能尚未完成
2. 有条件跳过:@pytest.mark.skipif
适用于满足某个条件时才跳过的测试,例如只在某些操作系统或 Python 版本下跳过