Wszystkie odpowiedzi zakładają, że chcesz zainicjować przypadki testowe z wiersza poleceń. Ale jeśli chcesz uruchomić testy programowo, spróbuj tego:import nose ; nose.runmodule() # aka nose.run(defaultTest=__name__)
MarkHu
1
IMHO prosta sugestia „py.test --junitxml results.xml test.py” najlepiej odpowiada na pytanie. „yum install pytest”, aby zainstalować py.test. Następnie możesz uruchomić dowolny skrypt Pythona Unittest i uzyskać wyniki jUnit xml
gaoithe
1
@gaoithe, który odpowiada na część Jenkinsa, ale nie spełnia wymagań dotyczących korzystania z wbudowanego modułu unittest. W tym projekcie był to wymóg.
erikbwork
@ erikb85 Kiedy mówię „uruchom dowolny skrypt pythona unittest”, mam na myśli skrypt, który używa modułu unittest.
gaoithe
Odpowiedzi:
173
przykładowe testy:
tests.py:
# tests.pyimport random
try:import unittest2 as unittest
exceptImportError:import unittest
classSimpleTest(unittest.TestCase):@unittest.skip("demonstrating skipping")def test_skipped(self):
self.fail("shouldn't happen")def test_pass(self):
self.assertEqual(10,7+3)def test_fail(self):
self.assertEqual(11,7+3)
Musisz użyć nose2.plugins.junitxmlwtyczki. Możesz skonfigurować nose2za pomocą pliku konfiguracyjnego, tak jak zwykle, lub za pomocą --pluginopcji wiersza poleceń.
+1 za prostą sugestię „py.test --junitxml results.xml test.py”. „yum install pytest”, aby zainstalować py.test. Następnie możesz uruchomić dowolny skrypt pythona unittest i uzyskać wyniki jUnit xml.
gaoithe
1
Jeśli chcesz korzystać z unittest-xml-report i korzystać z funkcji Test Discovery , możesz umieścić unittest.main(module=None, testRunner=xmlrunner.XMLTestRunner(output='test-reports')).
Rosberg Linhares
@RosbergLinhares dlaczego musisz module=Noneużywać Test Discovery? Działa dokładnie tak, jak opisano w odpowiedzi unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports')).
acm
@RosbergLinhares, podczas wykrywania testów moduły są tylko importowane, ale nie są wykonywane. Jak więc którekolwiek z tych rozwiązań ma współdziałać z wykrywaniem? Właśnie go wypróbowałem, nic z tego nie działa. A może coś mi brakuje?
Konstantin
20
Po drugie, użyłbym nosa. Podstawowe raportowanie XML jest teraz wbudowane. Po prostu użyj opcji wiersza poleceń --with-xunit, a utworzy plik nosetests.xml. Na przykład:
nosetests --with-xunit
Następnie dodaj akcję „Publikuj raport wyników testu JUnit” po kompilacji i wypełnij pole „Pliki XML raportu testowego” kodem nosetests.xml (zakładając, że wykonałeś testy nosetests w $ WORKSPACE).
Podczas korzystania z buildout używamy collective.xmltestreportdo tworzenia wyjścia XML w stylu JUnit, być może jego kod źródłowy lub sam moduł może być pomocny.
import nose ; nose.runmodule() # aka nose.run(defaultTest=__name__)
Odpowiedzi:
przykładowe testy:
tests.py:
JUnit z pytest
uruchom testy z:
results.xml:
JUnit z noskiem
uruchom testy z:
nosetests.xml:
JUnit z noskiem2
Musisz użyć
nose2.plugins.junitxml
wtyczki. Możesz skonfigurowaćnose2
za pomocą pliku konfiguracyjnego, tak jak zwykle, lub za pomocą--plugin
opcji wiersza poleceń.uruchom testy z:
nos2-junit.xml:
JUnit z raportowaniem unittest-xml
Dołącz następujące elementy do
tests.py
uruchom testy z:
raporty-testowe / TEST-SimpleTest-20131001140629.xml:
źródło
unittest.main(module=None, testRunner=xmlrunner.XMLTestRunner(output='test-reports'))
.module=None
używać Test Discovery? Działa dokładnie tak, jak opisano w odpowiedziunittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))
.Po drugie, użyłbym nosa. Podstawowe raportowanie XML jest teraz wbudowane. Po prostu użyj opcji wiersza poleceń --with-xunit, a utworzy plik nosetests.xml. Na przykład:
Następnie dodaj akcję „Publikuj raport wyników testu JUnit” po kompilacji i wypełnij pole „Pliki XML raportu testowego” kodem nosetests.xml (zakładając, że wykonałeś testy nosetests w $ WORKSPACE).
źródło
Możesz zainstalować pakiet unittest-xml-report, aby dodać moduł uruchamiający testy, który generuje XML do wbudowanego
unittest
.Używamy pytest , który ma wbudowane wyjście XML (jest to opcja linii poleceń).
Tak czy inaczej, wykonanie testów jednostkowych można wykonać, uruchamiając polecenie powłoki.
źródło
Użyłem nosetestów. Istnieją dodatki do wyprowadzania XML dla Jenkinsa
źródło
Podczas korzystania z buildout używamy
collective.xmltestreport
do tworzenia wyjścia XML w stylu JUnit, być może jego kod źródłowy lub sam moduł może być pomocny.źródło
Uruchom to jako powłokę z jenkins, możesz pobrać raport w pytest_unit.xml jako artefakt.
źródło