pytest 是一套面向 Python 的测试模式与技能集合,用于在编写 Python 测试时提供可参考的实践方式。其触发场景为:编写 Python 测试时,涉及 fixtures、mocking、markers 等主题。
用途 该技能用于指导 Python 测试的编写,覆盖从基础测试结构到夹具、模拟、参数化、标记和异步测试等常见测试模式。
主要能力
- 基础测试结构:以类组织测试,使用 assert 进行断言,使用 pytest.raises 配合 match 验证异常。
- Fixtures:定义可复用的测试夹具,支持返回值、yield 清理(teardown)、以及 module、class、session 等作用域。
- conftest.py:在 tests/conftest.py 中定义共享夹具,例如数据库会话和 API 客户端。
- Mocking:使用 unittest.mock 的 patch 和 MagicMock 模拟外部依赖,验证调用与异常场景。
- Parametrize:使用 pytest.mark.parametrize 对同一测试函数传入多组输入与期望值。
- Markers:在 pytest.ini 或 pyproject.toml 中注册标记,使用 slow、integration 等标记,并支持 skip、skipif。
- 异步测试:使用 pytest.mark.asyncio 编写异步测试函数。
- 常用命令:pytest、-v、-x、-k、-m、--cov、-n auto、--tb=short 等。
使用方式 按照资料中的示例编写测试代码:定义测试类与测试函数,使用 assert 断言;通过 @pytest.fixture 定义夹具,必要时使用 yield 进行清理;在 conftest.py 中放置共享夹具;使用 patch 或 MagicMock 模拟依赖;使用 @pytest.mark.parametrize 参数化;在配置文件中注册 markers 并配合 -m 过滤;异步测试使用 @pytest.mark.asyncio。运行命令包括 pytest、pytest -v、pytest -x、pytest -k "test_user"、pytest -m "not slow"、pytest --cov=src、pytest -n auto、pytest --tb=short。
适用场景 适用于编写 Python 测试的各类场景,包括单元测试、集成测试、异步代码测试,以及需要夹具复用、依赖模拟、参数化用例和按标记筛选测试的项目。
限制 资料未提供关于安装方式、版本要求、收费模式、平台支持范围或具体效果的信息,暂未提供。