2016-12-09 1 views
1

Ich habe vor kurzem mit dem Unterrichten von Grundschulkindern Python 3 beauftragt, ich bin in Ordnung, aber ich lerne immer noch. Ich dachte, die einfachste Sache für mich wäre, repl.it classroom edition zu verwenden, um es den Schülern zu ermöglichen, zu Hause auf sie zuzugreifen, wenn sie es wollten. Im repl.it-Klassenraum ist ein automatisches Markierungssystem enthalten, mit dem Sie unittest verwenden können, um zu überprüfen, ob der Code korrekt ist. Ich habe herausgefunden, wie man überprüft, ob die Variablen korrekt sind, aber ich habe Schwierigkeiten, die Ausgabe zu überprüfen. Der Code, den sie schreiben werden, ist wie folgtPython 3 Überprüfung der Druckausgabe gegen einen Wert

a = 5 
b = 10 

print(a + b) 

Was ich tun müssen, ist sicherzustellen, dass sie drucken 15. Ich habe folgende bisher versucht haben, habe ich importiert sys und die Unittest-Funktion wurde bereits von repl erstellt .it, also ist es nur diese Funktion, die ich manipulieren kann.

def test_output(self): 
    output = sys.stdout 
    self.assertEqual(output, 25) 

aber ich weiß, das ist nicht korrekt. Wenn mir jemand helfen könnte zu finden, wie man die Ausgabe überprüft, wäre das großartig.

+1

Verwandte: http://stackoverflow.com/questions/4219717/how-to-assert-output-with-nosetest-unittest-in-python –

+0

Warum re -Inventar das Rad? Ihre Implementierung wird schlimmer sein als Projekte, die von einem großen Entwicklerteam erstellt wurden. Vielleicht https://www.codecademy.com/ oder eine kindspezifische Ressource? – Giannis

Antwort

0

Ich würde versuchen, die eingebaute Druckfunktion zu verspotten oder zu patchen. Dann behaupten Sie auf dem Schein, dass es mit den richtigen Parametern aufgerufen wurde. Dies ist jedoch möglicherweise mit repl.it unmöglich. Können Sie auf einen Setup-/Teardown-Mechanismus für Ihren Test zugreifen?

Patching würde wie folgt aussehen:

@mock.patch('builtins.print') 
def test_some(self, mock_print) 
    ...would expect call to pupil code here 
    mock_print.assert_called_once_with (... your expectation) 
+0

Ja, ich habe Zugang zu einer Setup- und Teardown-Funktion, die ich bearbeiten kann – TheSk8rJesus

Verwandte Themen