Вывод unittest
записывается в стандартный поток ошибок, который вы можете передать куда-то еще. На * nix box это было бы возможно так:
python -m unittest some_module 2> /dev/null
На окнах это должно выглядеть так (спасибо Карлу Кнехтелю):
python -m unittest some_module 2> NUL
Если вы запускаете тесты из python, вы можете просто заменить поток 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)
С этим бегуном вы можете теперь наслаждаться тестированием без регистрации.
Просто примечание: это невозможно из командной строки, к сожалению.