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
codeEvery 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.parametrizeto 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.