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
code
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
python
"""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:
python
@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 committing - •
test:run-kind- Run on Kind cluster - •
test:run-hypershift- Run on HyperShift cluster - •
tdd:ci- Full TDD workflow