name: test:write description: Write E2E and unit tests following Kagenti testing standards
Write Tests
Write tests that follow Kagenti testing standards.
When to Use
- Adding a new feature that needs tests
- Fixing a bug (write regression test first)
- Improving test coverage for existing code
Test Structure
kagenti/tests/
├── e2e/
│ ├── common/ # Tests that run on all platforms
│ │ ├── test_agent_*.py
│ │ ├── test_mlflow_*.py
│ │ └── conftest.py
│ ├── conftest.py # Shared fixtures
│ └── test_*.py # Platform-specific tests
└── requirements.txt
Test Template
"""Test description - what scenario is being validated."""
import pytest
class TestFeatureName:
"""Tests for [feature] functionality."""
def test_specific_behavior(self, fixture):
"""Verify [specific behavior] when [condition]."""
# Arrange
expected = "specific_value"
# Act
result = do_something(fixture)
# Assert - ALWAYS assert specific values
assert result.status_code == 200, f"Expected 200, got {result.status_code}"
assert result.json()["key"] == expected
Standards
- One assertion per concept — test one thing per test method
- Descriptive names —
test_agent_returns_weather_for_valid_city - AAA pattern — Arrange, Act, Assert
- Specific assertions —
assert x == 42notassert x - Timeout handling — use
pytest.mark.timeout(300)notsleep() - Skip with reason —
@pytest.mark.skip(reason="MLflow disabled in Kind")
Fixtures (conftest.py)
Key fixtures available:
@pytest.fixture
def agent_url():
"""Agent URL from env or port-forward."""
@pytest.fixture
def kubeconfig():
"""KUBECONFIG path."""
@pytest.fixture
def kagenti_config():
"""Platform config from KAGENTI_CONFIG_FILE."""
After Writing
- Run
test:reviewto verify quality - Run
test:run-kindortest:run-hypershiftto execute - Use
git:committo commit
Related Skills
test:review- Review test quality before committingtest:run-kind- Run on Kind clustertest:run-hypershift- Run on HyperShift clustertdd:ci- Full TDD workflow