Pytest Code Review
Quick Reference
Issue Type Reference
async def test_*, AsyncMock, await patterns references/async-testing.md
conftest.py, factory fixtures, scope, cleanup references/fixtures.md
@pytest.mark.parametrize, DRY patterns references/parametrize.md
AsyncMock tracking, patch patterns, when to mock references/mocking.md
Review Checklist
-
Test functions are async def test_* for async code under test
-
AsyncMock used for async dependencies, not Mock
-
All async mocks and coroutines are awaited
-
Fixtures in conftest.py for shared setup
-
Fixture scope appropriate (function, class, module, session)
-
Yield fixtures have proper cleanup in finally block
-
@pytest.mark.parametrize for similar test cases
-
No duplicated test logic across multiple test functions
-
Mocks track calls properly (assert_called_once_with)
-
patch() targets correct location (where used, not defined)
-
No mocking of internals that should be tested
-
Test isolation (no shared mutable state between tests)
When to Load References
-
Reviewing async test functions → async-testing.md
-
Reviewing fixtures or conftest.py → fixtures.md
-
Reviewing similar test cases → parametrize.md
-
Reviewing mocks and patches → mocking.md
Review Questions
-
Are all async functions tested with async def test_*?
-
Are fixtures properly scoped with appropriate cleanup?
-
Can similar test cases be parametrized to reduce duplication?
-
Are mocks tracking calls and used at the right locations?