Pytest Mastery
Deep expertise in the pytest framework, mocking strategies, and Test Driven Development.
Knowledge
The Testing Standard: Pytest
* **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
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
* **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.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.