AgentSkillsCN

pytest-mastery

精通 pytest 框架、Mocking 策略,以及测试驱动开发(TDD)。

SKILL.md
--- frontmatter
name: pytest-mastery
description: Deep expertise in the pytest framework, mocking strategies, and Test
  Driven Development.

Pytest Mastery

Deep expertise in the pytest framework, mocking strategies, and Test Driven Development.

Knowledge

  • The Testing Standard: Pytest

    code
    *   **Framework:** We strictly use `pytest`. Do not use the legacy 
        `unittest` class-based style unless absolutely necessary for legacy 
        compatibility.
    *   **Discovery:** Test files must be named `test_*.py` or `*_test.py`. 
        Test functions must start with `test_`.
    *   **Structure:** Tests live in a `tests/` directory that mirrors the 
        `src/` package structure.
    
  • The "Arrange, Act, Assert" Pattern

    code
    Every test must follow this logical flow:
    1.  **Arrange:** Set up the state (variables, mocks, fixtures).
    2.  **Act:** Call the function/method under test.
    3.  **Assert:** Verify the result matches expectations using simple 
        `assert` statements.
    
  • Isolation & Mocking

    code
    *   **Unit Tests must be Hermetic:** They never touch the network, the 
        filesystem, or the database.
    *   **Tools:** Use `unittest.mock` (specifically `patch` and `MagicMock`) 
        to stub out external dependencies.
    *   **Fixtures:** Use `pytest.fixture` in `conftest.py` for shared setup 
        logic to keep test bodies clean.
    

Abilities

  • Utilize pytest.mark.parametrize to test multiple input/output scenarios with a single test function (Data-Driven Testing).
  • Write 'Negative Tests' that verify the code raises specific Exceptions (pytest.raises) when given invalid input.
  • Refactor complex setup code into reusable Fixtures.
  • Achieve high code coverage by targeting edge cases, not just happy paths.