Wyjście unittest
są zapisywane do standardowego strumienia błędów, które możesz potokować gdzie indziej. Na pudełku * nix byłoby to możliwe tak:
python -m unittest some_module 2> /dev/null
na oknach, powinno to wyglądać tak (dzięki Karl Knechtel):
python -m unittest some_module 2> NUL
Jeśli uruchomić testy z pytona można po prostu zastąpić strumień stderr
tak:
import sys, os
sys.stderr = open(os.devnull, 'w')
... # do your testing here
sys.stderr = sys.__stderr__ # if you still need the stderr stream
Ponieważ chcesz wyłączyć aktualizacje symboli., F, E, możesz również utworzyć własną klasę TestResult
, zastępując domyślną. W moim przypadku (Python 2.6) miałoby to wyglądać tak:
import unittest
class MyTestResult(unittest._TextTestResult):
def addSuccess(self, test):
TestResult.addSuccess(self, test)
def addError(self, test, err):
TestResult.addError(self, test, err)
def addFailure(self, test, err):
TestResult.addFailure(self, test, err)
To skutecznie wyłącza drukowanie znaków, ale zachowując funkcjonalność domyślną.
Teraz musimy również nowy TestRunner
klasę i zastąpić metodę _makeResult
:
class MyTestRunner(unittest.TextTestRunner):
def _makeResult(self):
return MyTestResult(self.stream, self.descriptions, self.verbosity)
Z tego biegacza można teraz cieszyć się bezpłatne testowanie dziennika.
Po prostu notatka: nie jest to możliwe z linii poleceń, niestety.
Dlaczego chcesz to zrobić? Na pewno warto zobaczyć postęp testów? –
W moim przypadku powoduje to zamieszanie, ponieważ moje testy są wykonywane równolegle, wydrukuję 1 komunikat z dziennika, a te komunikaty z protokołu testu nie są zsynchronizowane z odpowiednimi literami "E" "F" lub "." . – swan
Co powiesz na uruchomienie tych testów w oddzielnych procesach, które oddzielają strumienie wyjściowe? –