Testing Best Practices
1. Hierarchy & Strategy
- •E2E (End-to-End): Mandatory for every task.
- •Stub Stage: Assert hardcoded values (verify structure).
- •Impl Stage: Assert real logic (verify behavior).
- •Unit: Cover edge cases, error handling, and specific algorithms.
- •Regression: ALWAYS run the full test suite before submitting.
2. Critical Rules
- •NO LLM MOCKING in Tests: Do not mock OpenAI/Anthropic calls in standard tests. Use recorded responses (VCR.py) or separate integration environments.
- •Realism: Minimize mocks. Test real component capability where possible.
- •Isolation: Tests must be independent. Database state should be reset between tests.
- •Environment: Use the project's virtual environment (e.g.,
/opt/projects/.../venv).
3. Naming & Structure
- •Clear Names:
test_shoud_return_error_when_invalid_input. - •Organization: Mirror source structure (
src/auth->tests/auth). - •Docstrings: specificy WHAT is being tested.
- •Reference Examples:
- •Python:
examples/pytest_structure.py - •JavaScript:
examples/jest_structure.js
- •Python:
4. Resources
- •Templates: Use
assets/templates/test_boilerplate.pyto start new test files quickly.