88 lines
2.6 KiB
Markdown
88 lines
2.6 KiB
Markdown
# ESPHome Components Tests
|
|
|
|
This directory contains tests for all custom ESPHome components in this repository.
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
tests/
|
|
├── requirements.txt # Common Python dependencies for all tests
|
|
├── panasonic_heatpump/ # Tests for panasonic_heatpump component
|
|
│ ├── README.md
|
|
│ ├── test_panasonic_heatpump_unit.py # Unit tests
|
|
│ ├── test_panasonic_heatpump_integration.py # Integration tests
|
|
│ ├── test_panasonic_heatpump_esp32s2.yaml # ESP32-S2 test config
|
|
│ ├── test_panasonic_heatpump_esp32c3.yaml # ESP32-C3 test config
|
|
│ ├── test_panasonic_heatpump_cztaw1.yaml # CZ-TAW1 test config
|
|
│ ├── test_panasonic_heatpump_mini.yaml # Minimal ESP32 test config
|
|
│ └── test_panasonic_heatpump_full.yaml # Full ESP32 test config
|
|
└── [other_component]/ # Tests for other components (future)
|
|
```
|
|
|
|
## Running Tests
|
|
|
|
### Install Dependencies
|
|
```bash
|
|
pip install -r tests/requirements.txt
|
|
```
|
|
|
|
### Run All Tests
|
|
```bash
|
|
pytest tests/ -v
|
|
```
|
|
|
|
### Run Tests for Specific Component
|
|
```bash
|
|
# Panasonic Heatpump
|
|
pytest tests/panasonic_heatpump/ -v
|
|
|
|
# Other components (when added)
|
|
pytest tests/[component_name]/ -v
|
|
```
|
|
|
|
### Run with Coverage
|
|
```bash
|
|
pytest tests/ -v --cov=components --cov-report=html
|
|
```
|
|
|
|
## Adding Tests for New Components
|
|
|
|
When adding a new component, create a subdirectory under `tests/` with the same name as your component:
|
|
|
|
1. Create directory: `tests/[component_name]/`
|
|
2. Add test files:
|
|
- `test_[component_name].yaml` - ESPHome configuration for testing
|
|
- `test_[component_name]_unit.py` - Python unit tests
|
|
- `test_[component_name]_integration.py` - Integration tests
|
|
- `README.md` - Component-specific test documentation
|
|
3. Create GitHub Actions workflow: `.github/workflows/test_[component_name].yml`
|
|
|
|
## Test Types
|
|
|
|
### Unit Tests
|
|
- Test Python configuration validation
|
|
- Test component metadata
|
|
- Test schema structure
|
|
- Fast execution, no compilation required
|
|
|
|
### Integration Tests
|
|
- Test ESPHome configuration validation
|
|
- Test actual firmware compilation
|
|
- Test various configuration scenarios
|
|
- Slower execution, requires ESPHome
|
|
|
|
## Configuration
|
|
|
|
Test configuration is managed in `pytest.ini` at the repository root.
|
|
|
|
## GitHub Actions
|
|
|
|
Each component should have its own GitHub Actions workflow in `.github/workflows/` that:
|
|
- Validates ESPHome configurations
|
|
- Compiles test firmware
|
|
- Runs Python unit tests
|
|
- Checks code formatting
|
|
- Reports coverage
|
|
|
|
See `panasonic_heatpump` for a complete example.
|