Выход unittest
записывается в стандартный поток ошибок, который вы можете проехать куда-то еще. На коробке ничего * это было бы возможно так:
python -m unittest some_module 2> /dev/null
На окнах, это должно выглядеть следующим образом (спасибо Карл Knechtel):
python -m unittest some_module 2> NUL
Если вы запускаете тесты из питона , вы можете просто заменить stderr
поток вроде этого:
import sys, os
sys.stderr = open(os.devnull, 'w')
... # do your testing here
sys.stderr = sys.__stderr__ # if you still need the stderr stream
Поскольку вы просто хотите отключить обновления для символов., F, E, вы также можете создать свой собственный класс TestResult
, переопределив значение по умолчанию. В моем случае (Python 2.6) это будет выглядеть так:
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)
Это эффективно отключает печать персонажей, но сохраняя функциональность по умолчанию.
Теперь мы также нужен новый TestRunner
класса и переопределить метод _makeResult
:
class MyTestRunner(unittest.TextTestRunner):
def _makeResult(self):
return MyTestResult(self.stream, self.descriptions, self.verbosity)
С помощью этого бегунка теперь вы можете наслаждаться бесплатным тестированием журнала.
Просто примечание: к сожалению, из командной строки это невозможно.
Зачем вы хотите это сделать? Разумеется, полезно проверить ход тестов? –
В моем случае это добавляет путаницу, поскольку мои тесты запускаются параллельно, я печатаю 1 сообщение журнала, и эти сообщения тестового журнала arent синхронизируются с соответствующими «E» «F» или «.». , – swan
Как пропустить эти тесты в отдельных процессах, которые будут разделять выходные потоки? –