Clean unit tests - tests that focus in single component, and isolation from other components.
- Keep the test fast - 1 second, avoid communicating with external services and databases. We can use Record and Playback Proxy (API, Recorded Response, VCR.PY)
- Single assertion per test
- Keep tests isolated and focused on one thing only (so if the tests fails, you can quickly find the cause of the failure)
- Independent - we should able to run any test independently and randomly
- Code should not be duplicated, DRY tests (use parametrized or fixture)