Der Korrekturdienst Python3 Unit Tests steht Ihnen bei Codeeingabe-Aufgaben zur Verfügung. Von Studierenden eingegebener Python3-Code wird mit Hilfe von Unit Tests auf korrektes Funktionieren überprüft.
Wählen Sie den Korrekturdienst aus, indem Sie auf das Korrekturdienste-Symbol (1) klicken. Es öffnet sich die Seitenleiste mit dem Register Korrektur. Klicken Sie hier auf den Button Benutzen unter Python3 Unit Tests (2).
In der folgenden Beispielaufgabe sollen die Studierenden drei Funktionen erstellen, die dann vom Korrekturdienst auf Korrektheit überprüft werden.
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Codeeingabe-Aufgabe.
Klicken Sie auf das Korrekturdienste-Symbol (1). Die Seitenleiste öffnet sich. Klicken Sie anschließend auf den Button Benutzen (2), um den Korrekturdienst auszuwählen. Tragen Sie die zu verwendende Bibliothek import math
in das Quellcode-Feld ein. Diese Zeile wird den Studierenden bei der Bearbeitung der Aufgabe angezeigt. Klicken Sie anschließend auf Auswahl sperren, damit der vorgegebene Code in der Prüfung nicht verändert werden kann.
Die Aufgabe besteht aus drei Testcases. Legen Sie den ersten Testcase an, indem Sie auf den Button Neuer Eintrag für "Python3 Unit Tests" klicken.
Tragen Sie für den ersten Testcase mit der Aufgabenstellung "Schreiben Sie eine Funktion is_prime(n)..." den folgenden Code in das Quellcode-Feld Testcase ein:
def test_is_prime(self):
self.assertFalse(is_prime(4))
self.assertTrue(is_prime(2))
self.assertTrue(is_prime(3))
self.assertFalse(is_prime(8))
self.assertFalse(is_prime(10))
self.assertTrue(is_prime(7))
self.assertEqual(is_prime(-3), "Negative numbers are not allowed")
Bei mehreren Testcases (in diesem Beispiel sind es drei) können Sie über das Feld Gewichtung für jeden Testcase einstellen, wie hoch der Anteil der zu erreichenden Punkte von der Gesamtpunktzahl ist, wenn der Test erfolgreich war. Standardmäßig ist die Gewichtung für jeden Testcase mit "1" eingestellt.
Beispiel für eine andere Gewichtung: Bei einer Aufgabe mit insgesamt 3 Testcases ist die Gewichtung für einen Testcase mit "2" festgelegt, bei den anderen beiden mit "1". Der erste Testcase würde also 50% der Gesamtpunktzahl einbringen, die anderen beiden jeweils 25%.
Das Aktivieren der Checkbox Muss erfüllt sein um weitere Testcases auszuführen" bewirkt, dass - sollte der Test für diesen Testcase fehlschlagen - alle nachfolgenden Testcases nicht mehr ausgeführt werden.
def test_cubic(self):
self.assertEqual(cubic(2), 8)
self.assertEqual(cubic(-2), -8)
self.assertNotEqual(cubic(2), 4)
self.assertNotEqual(cubic(-3), 27)
Beachten Sie, dass die Namen der Funktionen in den einzelnen Testcases immer mit "test" anfangen müssen.
def test_say_hello(self):
self.assertEqual(say_hello("Max"), "Hello, Max")
self.assertEqual(say_hello("Lisa"), "Hello, Lisa")
self.assertNotEqual(say_hello("Tom"), "Hi, Tom")
self.assertNotEqual(say_hello("Test"), "Hi, Test")
Mögliche Lösung:
def is_prime(n):
if n < 0:
return 'Negative numbers are not allowed'
if n <= 1:
return False
if n == 2:
return True
if n == 3:
return True
if n % 2 == 0:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def cubic(a):
return a * a * a
def say_hello(name):
return "Hello, " + name
Bei Fehlern im Python3-Code einer Aufgabe, die erst nach der Prüfungsdurchführung auffallen, sind nachträgliche Code-Anpassungen möglich. Klicken Sie im Schritt Korrektur einer Prüfung neben der entsprechenden Aufgabe auf den Button Korrigieren. Klicken Sie dann auf das Korrekturdienste-Symbol und nehmen Sie die Anpassungen im Code vor. Klicken Sie dann auf den Button Korrektur speichern (links am Ende der Aufgabe), startet dies eine neue Korrektur.
Beachten Sie, dass Sie die Änderung für jede Variante einzeln übernehmen müssen.
Um zusätzliche Systemlast zu vermeiden, wird nur das korrigiert, was geändert wurde. Jedes Element wird autark korrigiert, damit es nicht zu Fehlern bei Abhängigkeiten kommen kann. Die Korrekturen beziehen sich also immer nur auf die Eingaben der Studierenden und die Variablen aus der Parametrisierung, aber nie auf Variablen oder Ergebnisse aus anderen Korrekturskripten.