SuperAPI AI 工具集

pytest

测试与质量

查看项目

更新于 10-15 14:31

技能介绍

pytest 是一套面向 Python 的测试模式与技能集合,用于在编写 Python 测试时提供可参考的实践方式。其触发场景为:编写 Python 测试时,涉及 fixtures、mocking、markers 等主题。

用途 该技能用于指导 Python 测试的编写,覆盖从基础测试结构到夹具、模拟、参数化、标记和异步测试等常见测试模式。

主要能力

  1. 基础测试结构:以类组织测试,使用 assert 进行断言,使用 pytest.raises 配合 match 验证异常。
  2. Fixtures:定义可复用的测试夹具,支持返回值、yield 清理(teardown)、以及 module、class、session 等作用域。
  3. conftest.py:在 tests/conftest.py 中定义共享夹具,例如数据库会话和 API 客户端。
  4. Mocking:使用 unittest.mock 的 patch 和 MagicMock 模拟外部依赖,验证调用与异常场景。
  5. Parametrize:使用 pytest.mark.parametrize 对同一测试函数传入多组输入与期望值。
  6. Markers:在 pytest.ini 或 pyproject.toml 中注册标记,使用 slow、integration 等标记,并支持 skip、skipif。
  7. 异步测试:使用 pytest.mark.asyncio 编写异步测试函数。
  8. 常用命令: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 测试的各类场景,包括单元测试、集成测试、异步代码测试,以及需要夹具复用、依赖模拟、参数化用例和按标记筛选测试的项目。

限制 资料未提供关于安装方式、版本要求、收费模式、平台支持范围或具体效果的信息,暂未提供。