TDD Guide
Test-driven development skill for generating tests, analyzing coverage, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, and Vitest.
Workflows
Generate Tests from Code
- Provide source code (TypeScript, JavaScript, Python, Java)
- Specify target framework (Jest, Pytest, JUnit, Vitest)
- Run
test_generator.py with requirements
- Review generated test stubs
- Validation: Tests compile and cover happy path, error cases, edge cases
Analyze Coverage Gaps
- Generate coverage report from test runner (
npm test -- --coverage)
- Run
coverage_analyzer.py on LCOV/JSON/XML report
- Review prioritized gaps (P0/P1/P2)
- Generate missing tests for uncovered paths
- Validation: Coverage meets target threshold (typically 80%+)
TDD New Feature
- Write failing test first (RED)
- Run
tdd_workflow.py --phase red to validate
- Implement minimal code to pass (GREEN)
- Run
tdd_workflow.py --phase green to validate
- Refactor while keeping tests green (REFACTOR)
- Validation: All tests pass after each cycle
Examples
Test Generation — Input → Output (Pytest)
Input source function (math_utils.py):
def divide(a: float, b: float) -> float:
if b == 0:
raise ValueError("Cannot divide by zero")
return a / b
Command:
python scripts/test_generator.py --input math_utils.py --framework pytest
Generated test output (test_math_utils.py):
import pytest
from math_utils import divide
class TestDivide:
def test_divide_positive_numbers(self):
assert divide(10, 2) == 5.0
def test_divide_negative_numerator(self):
assert divide(-10, 2) == -5.0
def test_divide_float_result(self):
assert divide(1, 3) == pytest.approx(0.333, rel=1e-3)
def test_divide_by_zero_raises_value_error(self):
with pytest.raises(ValueError, match="Cannot divide by zero"):
divide(10, 0)
def test_divide_zero_numerator(self):
assert divide(0, 5) == 0.0
Coverage Analysis — Sample P0/P1/P2 Output
Command:
python scripts/coverage_analyzer.py --report lcov.info --threshold 80
Sample output:
Coverage Report — Overall: 63% (threshold: 80%)
P0 — Critical gaps (uncovered error paths):
auth/login.py:42-58 handle_expired_token() 0% covered
payments/process.py:91-110 handle_payment_failure() 0% covered
P1 — High-value gaps (core logic branches):
users/service.py:77 update_profile() — else branch 0% covered
orders/cart.py:134 apply_discount() — zero-qty guard 0% covered
P2 — Low-risk gaps (utility / helper functions):
utils/formatting.py:12 format_currency() 0% covered
Recommended: Generate tests for P0 items first to reach 80% threshold.
Key Tools
| Tool |
Purpose |
Usage |
test_generator.py |
Generate test cases from code/requirements |
python scripts/test_generator.py --input source.py --framework pytest |
coverage_analyzer.py |
Parse and analyze coverage reports |
python scripts/coverage_analyzer.py --report lcov.info --threshold 80 |
tdd_workflow.py |
Guide red-green-refactor cycles |
python scripts/tdd_workflow.py --phase red --test test_auth.py |
fixture_generator.py |
Generate test data and mocks |
python scripts/fixture_generator.py --entity User --count 5 |
Additional scripts: framework_adapter.py (convert between frameworks), metrics_calculator.py (quality metrics), format_detector.py (detect language/framework), output_formatter.py (CLI/desktop/CI output).
Input Requirements
For Test Generation:
- Source code (file path or pasted content)
- Target framework (Jest, Pytest, JUnit, Vitest)
- Coverage scope (unit, integration, edge cases)
For Coverage Analysis:
- Coverage report file (LCOV, JSON, or XML format)
- Optional: Source code for context
- Optional: Target threshold percentage
For TDD Workflow:
- Feature requirements or user story
- Current phase (RED, GREEN, REFACTOR)
- Test code and implementation status
Limitations
| Scope |
Details |
| Unit test focus |
Integration and E2E tests require different patterns |
| Static analysis |
Cannot execute tests or measure runtime behavior |
| Language support |
Best for TypeScript, JavaScript, Python, Java |
| Report formats |
LCOV, JSON, XML only; other formats need conversion |
| Generated tests |
Provide scaffolding; require human review for complex logic |
When to use other tools:
- E2E testing: Playwright, Cypress, Selenium
- Performance testing: k6, JMeter, Locust
- Security testing: OWASP ZAP, Burp Suite
When to Use
Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and Mocha.
Covers: Workflows, Generate Tests from Code, Analyze Coverage Gaps, TDD New Feature, Test Generation — Input → Output (Pytest).
1---2name: tdd-guide3description: Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and Mocha. Use when the user asks to write tests, improve test coverage, practice TDD, generate mocks or ...4license: MIT5---6# TDD Guide78Test-driven development skill for generating tests, analyzing coverage, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, and Vitest.910---1112## Workflows1314### Generate Tests from Code15161. Provide source code (TypeScript, JavaScript, Python, Java)172. Specify target framework (Jest, Pytest, JUnit, Vitest)183. Run `test_generator.py` with requirements194. Review generated test stubs205. **Validation:** Tests compile and cover happy path, error cases, edge cases2122### Analyze Coverage Gaps23241. Generate coverage report from test runner (`npm test -- --coverage`)252. Run `coverage_analyzer.py` on LCOV/JSON/XML report263. Review prioritized gaps (P0/P1/P2)274. Generate missing tests for uncovered paths285. **Validation:** Coverage meets target threshold (typically 80%+)2930### TDD New Feature31321. Write failing test first (RED)332. Run `tdd_workflow.py --phase red` to validate343. Implement minimal code to pass (GREEN)354. Run `tdd_workflow.py --phase green` to validate365. Refactor while keeping tests green (REFACTOR)376. **Validation:** All tests pass after each cycle3839---4041## Examples4243### Test Generation — Input → Output (Pytest)4445**Input source function (`math_utils.py`):**46```python47def divide(a: float, b: float) -> float:48 if b == 0:49 raise ValueError("Cannot divide by zero")50 return a / b51```5253**Command:**54```bash55python scripts/test_generator.py --input math_utils.py --framework pytest56```5758**Generated test output (`test_math_utils.py`):**59```python60import pytest61from math_utils import divide6263class TestDivide:64 def test_divide_positive_numbers(self):65 assert divide(10, 2) == 5.06667 def test_divide_negative_numerator(self):68 assert divide(-10, 2) == -5.06970 def test_divide_float_result(self):71 assert divide(1, 3) == pytest.approx(0.333, rel=1e-3)7273 def test_divide_by_zero_raises_value_error(self):74 with pytest.raises(ValueError, match="Cannot divide by zero"):75 divide(10, 0)7677 def test_divide_zero_numerator(self):78 assert divide(0, 5) == 0.079```8081---8283### Coverage Analysis — Sample P0/P1/P2 Output8485**Command:**86```bash87python scripts/coverage_analyzer.py --report lcov.info --threshold 8088```8990**Sample output:**91```92Coverage Report — Overall: 63% (threshold: 80%)9394P0 — Critical gaps (uncovered error paths):95 auth/login.py:42-58 handle_expired_token() 0% covered96 payments/process.py:91-110 handle_payment_failure() 0% covered9798P1 — High-value gaps (core logic branches):99 users/service.py:77 update_profile() — else branch 0% covered100 orders/cart.py:134 apply_discount() — zero-qty guard 0% covered101102P2 — Low-risk gaps (utility / helper functions):103 utils/formatting.py:12 format_currency() 0% covered104105Recommended: Generate tests for P0 items first to reach 80% threshold.106```107108---109110## Key Tools111112| Tool | Purpose | Usage |113|------|---------|-------|114| `test_generator.py` | Generate test cases from code/requirements | `python scripts/test_generator.py --input source.py --framework pytest` |115| `coverage_analyzer.py` | Parse and analyze coverage reports | `python scripts/coverage_analyzer.py --report lcov.info --threshold 80` |116| `tdd_workflow.py` | Guide red-green-refactor cycles | `python scripts/tdd_workflow.py --phase red --test test_auth.py` |117| `fixture_generator.py` | Generate test data and mocks | `python scripts/fixture_generator.py --entity User --count 5` |118119Additional scripts: `framework_adapter.py` (convert between frameworks), `metrics_calculator.py` (quality metrics), `format_detector.py` (detect language/framework), `output_formatter.py` (CLI/desktop/CI output).120121---122123## Input Requirements124125**For Test Generation:**126- Source code (file path or pasted content)127- Target framework (Jest, Pytest, JUnit, Vitest)128- Coverage scope (unit, integration, edge cases)129130**For Coverage Analysis:**131- Coverage report file (LCOV, JSON, or XML format)132- Optional: Source code for context133- Optional: Target threshold percentage134135**For TDD Workflow:**136- Feature requirements or user story137- Current phase (RED, GREEN, REFACTOR)138- Test code and implementation status139140---141142## Limitations143144| Scope | Details |145|-------|---------|146| Unit test focus | Integration and E2E tests require different patterns |147| Static analysis | Cannot execute tests or measure runtime behavior |148| Language support | Best for TypeScript, JavaScript, Python, Java |149| Report formats | LCOV, JSON, XML only; other formats need conversion |150| Generated tests | Provide scaffolding; require human review for complex logic |151152**When to use other tools:**153- E2E testing: Playwright, Cypress, Selenium154- Performance testing: k6, JMeter, Locust155- Security testing: OWASP ZAP, Burp Suite156157## When to Use158159Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and Mocha.160161Covers: Workflows, Generate Tests from Code, Analyze Coverage Gaps, TDD New Feature, Test Generation — Input → Output (Pytest).