Dynamischer Python Checker (JACK3)

Aus JACK Wiki
Version vom 8. Oktober 2024, 11:02 Uhr von LGlaser (Diskussion | Beiträge) (WIP: Python-Checker)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Diese Seite befindet sich noch im Aufbau.

Der Aufgabentyp Python lässt sich automatisiert bewerten, indem Testfälle ausgeführt und z. B. ein erwarteter Wert mit einem tatsächlichen Wert verglichen wird. Der Python-Checker von JACK3 kann nicht nur Punktzahlen und Feedback zurückgeben, sondern auch Traces (welche Zeilen ausgeführt wurden und wie die Variablenbelegung beim Testfall war). Hierdurch lassen sich beliebig komplexe Testfälle und auch zufallsbasierte Tests schreiben sowie passgenaues Feedback erzeugen.

Der Checker arbeitet auf Python 3. Aktuell ist es nicht möglich, eigene Module zum Check hinzuzufügen oder Pakete aus dem Python Package Index (PyPI) / pip zu laden. Das Paket pandas ist vorinstalliert und kann durch den Testtreiber geladen werden, ansonsten sind ausschließlich Pakete der Python-Standardbibliothek eingebunden.

Hinweis: In diesem Artikel werden grundlegende Python-Kenntnisse vorausgesetzt.

Grundsätzlich ist ein Testtreiber ein einzelnes Modul mit einem einer oder mehreren parameterlosen Funktionen (Testfälle), die nacheinander ausgeführt werden.

API zum Zurückmelden von Ergebnissen

Testfälle nutzen das Modul Trace, um Ergebnisse zurückzuliefern. Dieses Modul wird während des dynamischen Checks automatisch geladen und sammelt Punktzahlen und Feedback auf. Es bietet folgende Funktionen:

def printResult(result: int, feedback: str = None):
  """
  Reports a result at the given line.

  :param result: Points which are reported. Must be between 0 and 100 (both inclusive).
  :param feedback: Optional Feedback presented to the user.
  """
  pass