Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| howto:git:classroom50:bewertung [2026/08/17 08:51] – Sync aus BZZ-Commons/pygrader50 (v2.1.2) admin | howto:git:classroom50:bewertung [2026/08/25 10:06] (aktuell) – Veraltet - Inhalt jetzt unter github.com/BZZ-Commons/pygrader50/docs admin | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Classroom 50: Wie bewertet wird ====== | ||
| - | |||
| - | Die Bewertung macht [[https:// | ||
| - | pytest für die Funktion, pylint für den Stil. Beides zählt zur Note. | ||
| - | |||
| - | ===== Die drei Konfigurationsdateien ===== | ||
| - | |||
| - | Format wie bisher in den BZZ-Templates, | ||
| - | |||
| - | ^ Datei ^ Inhalt ^ | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| - | |||
| - | <code javascript unittests.json> | ||
| - | [ | ||
| - | { " | ||
| - | ] | ||
| - | </ | ||
| - | |||
| - | <code javascript lint.json> | ||
| - | { " | ||
| - | </ | ||
| - | |||
| - | Vorlage: [[https:// | ||
| - | im pygrader50-Repository. | ||
| - | |||
| - | ===== Wo die Dateien gesucht werden ===== | ||
| - | |||
| - | **Pro Datei**, in dieser Reihenfolge: | ||
| - | |||
| - | - ''< | ||
| - | - '' | ||
| - | - '' | ||
| - | |||
| - | Fehlt beides, wird eine **0/ | ||
| - | wird dabei absichtlich nicht rot: Eine Aufgabe ohne hinterlegte Bewertung ist ein | ||
| - | Konfigurationsstand, | ||
| - | |||
| - | <WRAP center round tip 90%> | ||
| - | Der Fallback auf '' | ||
| - | Templates funktionieren unverändert weiter, während die Bundles nach und nach | ||
| - | ins Config-Repo wandern. | ||
| - | </ | ||
| - | |||
| - | ==== Ein Bundle anlegen ==== | ||
| - | |||
| - | < | ||
| - | classroom50/ | ||
| - | └── < | ||
| - | └── autograders/ | ||
| - | └── < | ||
| - | ├── unittests.json | ||
| - | ├── lint.json | ||
| - | └── pylintrc | ||
| - | </ | ||
| - | |||
| - | Nach dem Push bündelt der Workflow '' | ||
| - | '' | ||
| - | dort. | ||
| - | |||
| - | <WRAP center round important 90%> | ||
| - | **Kein '' | ||
| - | Beides hat Vorrang vor dem Klassen-Default und würde damit die BZZ-Bewertung — | ||
| - | und insbesondere das Linting — für diese Aufgabe abschalten. | ||
| - | </ | ||
| - | |||
| - | ===== Punkte ===== | ||
| - | |||
| - | ==== Unittests ==== | ||
| - | |||
| - | Ein Eintrag pro Testfall. '' | ||
| - | Fall läuft als **eigener** pytest-Aufruf mit eigenem Timeout, damit ein | ||
| - | hängender Test die übrigen nicht mitreisst. | ||
| - | |||
| - | ==== Linting ==== | ||
| - | |||
| - | Ein einziger Eintrag '' | ||
| - | |||
| - | < | ||
| - | Punkte = pylint-Note / 10 * max | ||
| - | passed = Punkte > 0 | ||
| - | </ | ||
| - | |||
| - | Eine Konventionsmeldung kostet also **Punkte**, färbt den Commit-Status aber | ||
| - | nicht rot. Ohne diese Regel wäre praktisch jeder Commit rot. | ||
| - | |||
| - | Bei wenigen Statements und einem '' | ||
| - | auf 0 geklemmt. '' | ||
| - | |||
| - | ==== Rundung ==== | ||
| - | |||
| - | '' | ||
| - | steht im Feedback-Text. | ||
| - | |||
| - | ===== Beispiel-Feedback ===== | ||
| - | |||
| - | < | ||
| - | ### classroom50 autograde: 0/7 | ||
| - | |||
| - | ## Unittests | ||
| - | | name | feedback | ||
| - | | -------- | --------------- | -------- | ------ | ------ | --- | | ||
| - | | test_ggt | Assertion Error | 8 | None | 0 | 2 | | ||
| - | |||
| - | **0.00/2.00 Points (0.00%)** | ||
| - | </ | ||
| - | |||
| - | Die Spalten // | ||
| - | '' | ||
| - | |||
| - | ===== Warum nicht die deklarativen Tests von Classroom 50 ===== | ||
| - | |||
| - | Classroom 50 bringt mit '' | ||
| - | benutzt ihn bewusst nicht: | ||
| - | |||
| - | * Der Runner löst eine aufgaben-eigene '' | ||
| - | * Im deklarativen Pfad wäre entweder die proportionale Lint-Note **oder** der grüne Commit-Status zu haben, nie beides: Der Interpreter setzt '' | ||
| - | |||
| - | Pro Aufgabe lässt sich beides nicht mischen — pro Klasse schon. Deshalb stehen | ||
| - | alle Aufgaben auf ''" | ||
| - | |||
| - | ===== Was pygrader50 bewusst nicht tut ===== | ||
| - | |||
| - | * **Keine Zusatzfelder in '' | ||
| - | * **Kein '' | ||
| - | * **Kein '' | ||
| - | |||
| - | ===== Lokal ausprobieren ===== | ||
| - | |||
| - | <code bash> | ||
| - | cd / | ||
| - | CLASSROOM=< | ||
| - | ASSIGNMENT=< | ||
| - | SUBMISSION_TAG=submit/ | ||
| - | OWNER=anna \ | ||
| - | python -m pygrader50 | ||
| - | cat release-body.md | ||
| - | </ | ||
| - | |||
| - | Ohne '' | ||
| - | '' | ||