Directory Structure and Scope:
tests/
├── conftest.py # Global fixtures
├── unit/
│ ├── conftest.py # Unit test fixtures
│ └── test_models.py
├── integration/
│ ├── conftest.py # Integration test fixtures
│ └── test_api.py
└── e2e/
├── conftest.py # E2E test fixtures
└── test_workflow.py
what is conftest what does it do?
conftest.py is a special file used in pytest for sharing fixtures across multiple test files. Let me explain its key features and usage:
Key Features:
- Automatically discovered by pytest
- Can be placed in different directories for different scopes
- No need to import fixtures in test files
- Can define fixture hierarchies
Key Benefits:
- Reusability across test files
- Centralized test configuration
- Clean test organization
- Reduced code duplication
- Easy mocking and dependency injection
- Flexible scoping options
- Automatic fixture discovery
Remember:
- Place common fixtures in the root conftest.py
- Use directory-specific conftest.py for specialized fixtures
- Consider fixture scope for performance
- Use clear naming conventions
- Document fixtures with docstrings