Testing Notes
Unit Testing vs. Integration Testing
- Unit Testing: Tests individual components (e.g. functions, helper methods) in isolation. External dependencies (like databases or APIs) are mocked.
- Integration Testing: Tests how different parts of the system work together (e.g. hitting an endpoint to ensure it writes to a test database and returns the correct response).
pytest best practices
- Use fixtures (
@pytest.fixture) for setup and teardown logic (e.g., creating and rolling back database sessions).
- Keep tests fast by using in-memory databases (sqlite) or a separate Postgres test database that gets cleaned/re-seeded before each test.
- Use
pytest-cov to measure and monitor code coverage.