Topic: The testertest*.py convention appears in ~25 project directories; understanding its role vs. test_*.py clarifies the project's testing strategy

Date: 2026-05-29

Time: 07:36

The testertest*.py vs test_*.py Convention

This project uses a two-tier testing strategy: each implementation directory contains both a test*.py file and a testertest_*.py file. They look similar at first glance — both use pytest conventions, both test the same module — but they serve different roles in the development pipeline.

testertest*.py: The Spec Verification Suite

These files are generated as part of the implementation task. They're written by the "tester" stage of the code-expert workflow — an LLM agent that reads the implementation spec and produces tests that verify the spec's requirements are met.

Key characteristics:

test_*.py: The Developer Test Suite

These are the comprehensive tests that go beyond spec verification:

The Naming Variants

Not every project follows the exact testertest*.py pattern. leaderless-replication/testdynamotester.py inverts the convention to test*tester.py, and unbundled-database/testtestervalidation.py uses yet another variant. The docstring in testdynamotester.py:1"""QA tester tests for Dynamo-style leaderless replication.""" — confirms the "tester" label refers to the QA/validation role regardless of filename ordering. The unbundled-database/testtestervalidation.py file (line 1: """Tester-stage validation: edge cases and spec example verification.""") makes this even more explicit: these are "tester-stage" artifacts with classes like TestSpecExample that replay the exact usage from the spec.

Why Two Suites?

The split reflects the code-expert workflow documented in CLAUDE.md: implementations are built by an LLM pipeline that generates code from DDIA-based specs. The tester files are a correctness gate — "does this implementation satisfy what the spec asked for?" The developer test files are the robustness layer — "does this implementation handle crashes, edge cases, and internal invariants correctly?" Running pytest picks up both (all files match test*.py or *test*.py), so the full suite runs together, but the tester files could also run standalone via python testertest_*.py.

Topics to Explore

Beliefs