Resolve the unittest-vs-pytest contradiction across Modules 13/14 (and align M5, M16, ci-starter.yml) #9
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Module 13 deliberately teaches stdlib
unittest, runspython -m unittest, and justifies the choice with two promises: the test file drops into Module 14 CI "without a pip install step first," and CI runs "this exactpython -m unittestcommand." Module 14 instead runspip install pytest ruffandpytest -q(repeated in M16); its labtest_tasks.pyis plain-function pytest style; and no bridge explains that pytest auto-discoversunittest.TestCasetests. M5 also forward-references pytest before testing is introduced. So pytest is the de-facto course runner everywhere except the module that teaches a runner, and M13's headline rationale is falsified by the next module.Evidence
M13: "We use
unittesthere so … you can drop into CI in Module 14 without a pip install step first" and "runs this exactpython -m unittestcommand" (~line 164).M14:
pip install pytest ruff/pytest -q(README ~lines 123/127;lab/ci-starter.yml~lines 38/46).lab/ci-starter.ymlcomment also misattributes pytest/ruff to "Module 13".modules/14-.../lab/test_tasks.pyis plain-function pytest style.M5 ~line 179: "Optionally pytest (
pip install pytest)".Why it matters
A falsified stated rationale on the load-bearing M13→M14 chain, against a non-beginner audience that will notice — breaks the honesty promise and the dependency chain.
Proposed change
Pick one runner and align the chain. Cleanest (keep pytest):
unittest.TestCasetests; CI installs it."python -m unittestcommand" claims.ci-starter.ymlcomment that attributes pytest/ruff to Module 13, and thetest_tasks.pydocstring claiming it is "the kind of suite Module 13 has you write".Equally valid alternative: standardize on
unittestand have M14 runpython -m unittest(no pip install) — but then make M14's lab file and M16 consistent.Acceptance criteria
ci-starter.ymlcomment andtest_tasks.pydocstring are accurate.Affected files
modules/13-testing-in-the-ai-era/README.md,modules/14-continuous-integration/README.md,modules/14-.../lab/ci-starter.yml,modules/14-.../lab/test_tasks.py,modules/05-commit-the-ai-config/README.md,modules/16-containers-and-reproducible-environments/README.mdReferences
Source finding F8 (realVotes 3/3).
Filed from an adversarial multi-agent course review (217 raw findings → 54 adversarially-verified survivors). Scoped for manual review; intentionally not auto-assigned to an agent.