Pytest 会话测试
- 作者仓库星标 2,412
- 许可证 NOASSERTION
- 作者仓库 debugpy
Skill: pytest
Best practices for writing and organizing tests with pytest including fixtures, parametrize, and plugins.
When to Use
Apply this skill when writing and organizing tests with pytest — fixtures, parametrize, markers, plugins, and test structure.
Test Organization
- Place tests in a
tests/directory mirroring the source structure. - Name test files
test_<module>.pyand test functionstest_<behavior>(). - Group related tests in classes only when they share fixtures/setup.
Fixtures
- Define fixtures at the narrowest scope needed (
function>class>module>session). - Use
conftest.pyfor shared fixtures; put it at the appropriate directory level. - Prefer factory fixtures over complex fixture inheritance.
- Use
yieldfixtures for setup/teardown; prefertmp_pathovertempfile.
Parametrize
- Use
@pytest.mark.parametrizefor data-driven tests with multiple inputs. - Give test IDs (
ids=...) for readable test output. - Combine
parametrizewith fixtures for cross-product testing.
Assertions
- Use plain
assertstatements — pytest rewrites them for clear failure messages. - Use
pytest.raises(ExceptionType, match=...)for exception testing. - Use
pytest.approx()for floating-point comparisons.
Plugins
- Common plugins:
pytest-cov,pytest-mock,pytest-asyncio,pytest-xdist,pytest-timeout. - Use
pytest-mock'smockerfixture over rawunittest.mock.patch.
Pitfalls
- Don't use
session-scoped fixtures for mutable state. - Don't assert on implementation details — test observable behavior.
- Avoid test interdependence; each test should be runnable in isolation.
- 流狐分类
- 文档
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 94 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @microsoft · NOASSERTION
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 即装即用
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- 未声明
- 底层运行要求
- 未声明
- 检测到的文件与系统行为
-
- 只读
- 检测到的网络行为
- 仅限本地
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 Apply this skill when writing and organizing tests with pytest — fixtures, parametrize, markers, plugins, and test structure.
Place tests in a tests/ directory mirroring the source structure. Name test files test<module>.py and test functions test<behavior>(). Group related tests in classes only when they share fixtures/setup.
Define fixtures at the narrowest scope needed (function > class > module > session). Use conftest.py for shared fixtures; put it at the appropriate directory level. Prefer factory fixtures over complex fixture inheritance.
Use @pytest.mark.parametrize for data-driven tests with multiple inputs. Give test IDs (ids=...) for readable test output. Combine parametrize with fixtures for cross-product testing.
Use plain assert statements — pytest rewrites them for clear failure messages. Use pytest.raises(ExceptionType, match=...) for exception testing. Use pytest.approx() for floating-point comparisons.
Common plugins: pytest-cov, pytest-mock, pytest-asyncio, pytest-xdist, pytest-timeout. Use pytest-mock's mocker fixture over raw unittest.mock.patch.
# Skill: pytest
Best practices for writing and organizing tests with pytest including fixtures, parametrize, and plugins.
## When to Use
Apply this skill when writing and organizing tests with pytest — fixtures, parametrize, markers, plugins, and test structure.
## Test Organization
- Place tests in a `tests/` directory mirroring the source structure.
- Name test files `test_<module>.py` and test functions `test_<behavior>()`.
- Group related tests in classes only when they share fixtures/setup.
## Fixtures
- Define fixtures at the narrowest scope needed (`function` > `class` > `module` > `session`).
- Use `conftest.py` for shared fixtures; put it at the appropriate directory level.
- Prefer factory fixtures over complex fixture inheritance.
- Use `yield` fixtures for setup/teardown; prefer `tmp_path` over `tempfile`.
## Parametrize
- Use `@pytest.mark.parametrize` for data-driven tests with multiple inputs.
- Give test IDs (`ids=...`) for readable test output.
- Combine `parametrize` with fixtures for cross-product testing.
## Assertions
- Use plain `assert` statements — pytest rewrites them for clear failure messages.
- Use `pytest.raises(ExceptionType, match=...)` for exception testing.
- Use `pytest.approx()` for floating-point comparisons.
## Plugins
- Common plugins: `pytest-cov`, `pytest-mock`, `pytest-asyncio`, `pytest-xdist`, `pytest-timeout`.
- Use `pytest-mock`'s `mocker` fixture over raw `unittest.mock.patch`.
## Pitfalls
- Don't use `session`-scoped fixtures for mutable state.
- Don't assert on implementation details — test observable behavior.
- Avoid test interdependence; each test should be runnable in isolation. 作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> When to Use → Test Organization → Fixtures → Parametrize → Assertions → Plugins
要点 -> Best practices for writing and organizing tests with pytest including fixtures, parametrize, and plugins. · Apply this skill when writing and organizing tests with pytest — fixtures, parametrize, markers, plugins, and test structure. · - Place tests in a tests/ directory mirroring the source structure. · - Define fixtures at the narrowest scope needed (function > class > module > session). · - Use @pytest.mark.parametrize for data-driven tests with multiple inputs. · - Use plain assert statements — pytest rewrites them for clear failure messages. · - Common plugins: pytest-cov, pytest-mock, pytest-asyncio, pytest-xdist, pytest-timeout. · - Don't use session-scoped fixtures for mutable state.
文件/命令 -> tests/ · test<module>.py · test<behavior>() · function · class · module · session · conftest.py
内容 SHA-256 -> b1c1f8e689f4
原文结构
适用与边界
原文中的明确线索
tests/、test<module>.py、test<behavior>()、function、class、module、session、conftest.py