2017-04-20 3 views
0

Ich habe ein Problem beim Ausführen von Unit Tests in Pycharm. Die erste Klasse 'KnownValues' läuft, aber die andere Klasse wird überhaupt nicht überprüft.PyCharm scheint nicht alle Komponententests auszuführen

import roman 
import unittest 

class KnownValues(unittest.TestCase): 

    def test_too_large(self): 
     '''to_roman should fail with large input''' 
     self.assertRaises(roman.OutOfRangeError, roman.to_roman, 4000) 
    def test_too_small(self): 
     ls = [0,-1,-25,-60] 
     for x in ls: 
      self.assertRaises(roman.OutOfRangeError, roman.to_roman, x) 
    def test_non_int(self): 
     ls = [1.5, -6.5, 6.8,12.9, "hello wold", "nigga123"] 
     for x in ls: 
      self.assertRaises(roman.TypeError, roman.to_roman, x) 

class Test2(unittest.TestCase): 
    def test1(self): 
     assert 1 == 1 


if __name__ == '__main__': 
    unittest.main() 
+0

Haben Sie verifiziert, dass sich dies vom Verhalten unterscheidet, wenn Sie das Programm außerhalb von PyCharm ausführen? – holdenweb

+0

Was passiert, wenn Sie den Namen der Testmethode von test1 in test_1 ändern? – Charlie

+0

@Charlie nein für pycharm es läuft es nicht, auch wenn ich es in test_1 ändern – Bl4ckC4t

Antwort

3

Starten Sie alle Ihre Testfunktionen mit test. Viele Menschen verwenden Unterstriche, um Wörter zu trennen, so dass viele Leute mit Tests beginnen, die mit test_ beginnen, aber test ist alles was benötigt wird.

Wenn Probleme in der GUI auftreten, können Sie über die Befehlszeile überprüfen, wie Ihre Tests ausgeführt werden.

python test.py 

oder

python -m test 

Ein Problem, das Sie den Weg laufen könnte, ist, dass Sie Ihre Tests innerhalb von Klassen definiert haben, und wenn sie über die GUI ausgeführt wird, hat die GUI entdeckt sie automatisch für Sie. Achten Sie darauf, die Zeilen am Ende der Testdatei einzufügen, damit der Interpreter die in unittest integrierte Funktion main verwenden kann.

if __name__ == '__main__': 
    unittest.main() 

Denken Sie daran, können Sie optional die Tests in nur einer Ihrer Klassen zu einem Zeitpunkt ausgeführt:

python tests.py KnownValues 
python tests.py Test2 

In PyCharm, es automatisch alle Testklassen entdecken sollten. Sie haben weiterhin die Option, jeweils nur eine Klasse auszuführen. Wählen Sie Ausführen -> Konfigurationen bearbeiten, um die Optionen anzuzeigen, unter denen Sie gerade ausgeführt werden. Mithilfe von Befehlszeilenparametern können Sie steuern, ob weniger oder mehr Tests ausgeführt werden.

Wie Sie sehen können, können Sie ein Skript, eine Klasse oder eine Methode ausführen. Stellen Sie sicher, dass Sie den Namen Ihrer Ausführungskonfiguration so festlegen, dass er den Umfang Ihrer ausgeführten Aktivitäten widerspiegelt.

1

Ich muss nur mit den ‚Run Unittests in Test‘ und nicht die ‚Debug Unittests in KnownValues‘ die Testdatei ausführen. Arbeit (Test ist der Dateiname meiner Unittest Datei ‚test.py‘)

Verwandte Themen