Letzte Sitzung:
Jetzt:
Bevor wir weitermachen — heben Sie die Hand, wenn:
uv sync
pre-commit install
Falls etwas fehlt, beheben Sie es jetzt während wir sprechen. Fragen Sie Ihr KI-Werkzeug um Hilfe.
Nach jeder Änderung müssen die relevanten Tests bestehen.
Sie führen nicht alle 700+ Tests aus — nur die Ihres Moduls:
# Package A (~8s) uv run pytest locust/test/test_util.py locust/test/test_log.py -x -q # Package B (~22s) uv run pytest locust/test/test_stats.py -x -q # Package C (~9s) uv run pytest locust/test/test_tags.py locust/test/test_locust_class.py -x -q
-x = Stopp beim ersten Fehler. -q = weniger Ausgabe. Schnelle Feedback-Schleife.
-x
-q
Alle Details in den Brownfield Locust Exercises.
uv run pytest --cov=locust --cov-report=term-missing <your-test-files> -q
Ein Test, der eine Funktion aufruft und True assertiert, deckt Zeilen ab, verifiziert aber nichts.
True
Wir haben die Coverage-Lücken vorab analysiert — Ihr Paket sagt Ihnen genau, welche Funktionen zu testen sind.
# VOR Ihrer Änderung uv run python benchmarks/run_benchmarks.py # Änderung durchführen # NACH Ihrer Änderung uv run python benchmarks/run_benchmarks.py
Wie Sie die Zahlen lesen:
Nehmen Sie Vorher/Nachher-Zahlen in Ihre PR-Beschreibung auf.
=== Locust Performance Benchmark === Package A targets: log.py: setup_logging() — 11,442 ops/sec Package B targets: stats.py: StatsEntry.log() — 1,054,805 ops/sec stats.py: StatsEntry.extend() — 17,740 ops/sec Package C targets: task.py: filter_tasks_by_tags() — 6,597 ops/sec =====================================
Lassen Sie uns das live ausführen.
Jede PR-Beschreibung sollte erklären:
KI kann PR-Beschreibungen entwerfen — aber prüfen Sie, ob sie beschreibt, was der Code tut, nicht was er tun sollte.
Neu bei PRs? Siehe: Feature Branch Development
diary/feature/<team-name>-<task>/ ├── 001-onboarding.md ├── 002-coverage-memoize.md ├── 003-refactoring-setup-logging.md
Zentrale Änderung gegenüber Vorlesung 2: Jeder Tagebucheintrag wird zusammen mit dem Code committet, den er dokumentiert.
git commit -m "[diary] 002 — Write tests for memoize decorator"
Alle KI-Interaktionen filtern: git log --grep='\[diary\]'
git log --grep='\[diary\]'
uv run ruff check .
[diary]
Diese Checkliste steht auch in CLAUDE.md — Ihr KI-Werkzeug kennt sie ebenfalls.
CLAUDE.md
locust/util/
log.py
test_util.py test_log.py
stats.py
html.py
test_stats.py
user/
debug.py
test_tags.py test_locust_class.py
Ihre Lehrperson weist Ihr Team einem Paket zu. Jedes enthält:
Alle Details: Brownfield Exercises
Coverage-Ziele:
util/cache.py
memoize()
util/exception_handler.py
retry()
user/inspectuser.py
_calc_distribution()
Refactoring-Ziel:
log.py:setup_logging()
Testbefehl: uv run pytest locust/test/test_util.py locust/test/test_log.py locust/test/test_taskratio.py -x -q
uv run pytest locust/test/test_util.py locust/test/test_log.py locust/test/test_taskratio.py -x -q
StatsError.parse_error()
StatsError.to_name()
serialize()
get_html_report()
stats.py:StatsEntry.extend()
Testbefehl: uv run pytest locust/test/test_stats.py locust/test/test_html_filename.py -x -q
uv run pytest locust/test/test_stats.py locust/test/test_html_filename.py -x -q
user/task.py
filter_tasks_by_tags()
user/users.py
HttpUser.__init__()
PrintListener.on_request()
user/task.py:filter_tasks_by_tags()
_task_matches_tags()
Testbefehl: uv run pytest locust/test/test_tags.py locust/test/test_locust_class.py locust/test/test_users.py -x -q
uv run pytest locust/test/test_tags.py locust/test/test_locust_class.py locust/test/test_users.py -x -q
Finden Sie Ihre Teamnummer und Ihr Paket an der Tafel.
Jedes Team:
feature/<team-name>-<package>
diary/feature/<team-name>-<package>/
master
explore → test → refactor → PR
explore
test
refactor
PR
Jede KI-Interaktion → Tagebucheintrag + Commit.
Sie haben 60 Minuten.
Ressourcen:
Schnelle Testbefehle:
Kurzer Statuscheck:
Häufiger Fehler: KI generiert einen Test, der True assertiert. Das ist kein Test. Fragen Sie: „Würde dieser Test einen Bug erkennen?"
Abgabe vor der nächsten Vorlesung:
Alle Details und Bewertungsmatrix: Brownfield Exercises
Akt II beginnt: Verstehen, wie KI-Werkzeuge tatsächlich funktionieren.
Die Erfahrung, die Sie heute aufgebaut haben, wird zur Grundlage für das Verständnis des Mechanismus.
TODO: link to DE version when available
Instructor: Fill in team assignments on the board or screen