Python testing tdd
Trigger: write tests, pytest, TDD, red-green-refactor, fixtures, mocks, parametrize, coverage, test first. Drive Python features test-first with quality pytest patterns.From its SKILL.md
npx -y skills add JoseVelazcoH/python-skills --skill python-testing-tddAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
2.6 KB, 545 tokens by cl100k_base, as published. Nobody here has run it
Python Testing & TDD
Test-first development with pytest. Combines the Red-Green-Refactor workflow with quality test patterns.
Activation Contract
Apply when the user writes tests, builds a feature test-first, asks about pytest/fixtures/mocks/coverage, or wants the full TDD cycle. Default to TDD: test before implementation.
Hard Rules
- Red → Green → Refactor, in that order. Write a failing test first; write the minimal code to pass; then improve with tests green.
- One scenario per test. Name it
test_<subject>_<condition>_<expected>. Follow Arrange-Act-Assert. - Tests must be isolated and order-independent: no shared mutable module state.
- Mock only external boundaries (APIs, email, payments, time, uuid, random). Use a real test database; never mock internal repositories/services or the code under test.
- Enable branch coverage (
--cov-branch); cover both sides of every conditional, not just lines. - Use
parametrizeonly for the same check over many inputs: separate tests for distinct scenarios.
Decision Gates
| Situation | Action |
|---|---|
| New behavior requested | Write failing test first (Red) |
| External dependency in unit | Mock it (AsyncMock/Mock(spec=...)) |
| DB involved | Real test DB + transaction rollback fixture |
| Same assertion, many inputs | @pytest.mark.parametrize |
| Distinct scenarios | Separate named tests |
| Async code | asyncio_mode = "auto", async fixtures |
Execution Steps
- RED: write the smallest failing test for the next behavior; run it, confirm it fails for the right reason.
- GREEN: write the minimal code to pass; run, confirm green.
- REFACTOR: clean code and tests while green.
- Repeat per behavior; track phases explicitly for non-trivial features.
async def test_create_order_with_two_items_sums_total(service):
# Arrange
items = [{"price": 100, "qty": 2}, {"price": 50, "qty": 1}]
# Act
order = await service.create(items=items)
# Assert
assert order.total == 250
Output Contract
Return tests (and, in TDD, the minimal implementation) with clear behavior-naming, isolation via fixtures, and external-only mocking. State which phase (Red/Green/Refactor) each change belongs to.
References
- Pair with
python-clean-codeandpython-design-principlesduring Refactor.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.