2016-04-20 4 views
0

Für ein Projekt mit Jenkins würde ich gerne Python-Unit-Tests ausführen können. Diese Tests enthalten Interaktionen mit einem eingebetteten Gerät. Die Ergebnisse sollten an Jenkins zurückgemeldet werden.Ausführen von Python-Unit-Tests und Ausgabe der Ergebnisse an Jenkins

Meine aktuelle Setup (mit Python 2.7) sieht folgende

| 
| helperModules 
|-- customlogger.py 
|-- settings.py 
|-- serial.py 
| tests 
|-- test_login 
|-- test_communicate_serial 
| start.py 

im Stammverzeichnis Ich habe eine Datei mit dem Namen start.py, das einige Einstellungen wie ein benutzerdefinierten Logger initialisiert und einige allgemeinen Einstellungen Laden vor dem Ausführen die Unittests. Die Tests selbst befinden sich im Verzeichnistest, die Tests basieren derzeit auf unittest von Python und werden von start.py ausgeführt.

Da ich die Tests ausführen und einen Bericht generieren möchte, der für Jenkins lesbar ist, möchte ich wissen, welche Schritte ich nehmen sollte. Benutze py.test, nose oder xmlrunner? Da die Nase wahrscheinlich nicht mehr gepflegt wird, ist dies nicht bevorzugt. Sollte ich py.test verwenden, muss ich mein Setup anpassen und versuchen, start.py zu entfernen. Die Protokollierung, die ich in meinem start.py eingerichtet habe, ist für das Debuggen notwendig. Wenn ich es also durch das Einfügen in die Testfälle selbst ersetzen muss, wird mein aktuelles Design geändert, allerdings ist diese Protokollierung eine Voraussetzung.

Neugierig was Ihre Gedanken darüber sind, wie würden Sie fortfahren.

Antwort

0

Nach dem Post begann ich mit Pytest zu experimentieren und das in der aktuellen start.py zu integrieren.

Wenn alle Setup abgeschlossen ist, rufe ich diese pytest.main mit dem Argument, um die XML-Datei zu generieren. Es hat automatisch meine Komponententests entdeckt und ausgeführt.

Es sieht so aus, als ob die Integration einfach war und immer noch Kompatibilität mit meinem Setup. Hoffe, diese Antwort kann auch anderen helfen.

Ein weiterer Vorteil ist, dass ich auch

python -m pytest --junitxml=test.xml 

von der Kommandozeile natürlich der Aufbau der Protokollierung findet nicht statt laufen kann, wenn die Tests laufen, aber Tests ausführen, die ein nettes Feature sein kann.

Verwandte Themen