Параметры многословия не могут отключить печать результатов теста. Однако pytest
можно настроить разными способами, включая печать результатов. Чтобы изменить это, вы должны переопределить хук pytest_report_teststatus
.
отключить короткие буквы
Создать файл conftest.py
со следующим содержимым:
import pytest
def pytest_report_teststatus(report):
category, short, verbose = '', '', ''
if hasattr(report, 'wasxfail'):
if report.skipped:
category = 'xfailed'
verbose = 'xfail'
elif report.passed:
category = 'xpassed'
verbose = ('XPASS', {'yellow': True})
return (category, short, verbose)
elif report.when in ('setup', 'teardown'):
if report.failed:
category = 'error'
verbose = 'ERROR'
elif report.skipped:
category = 'skipped'
verbose = 'SKIPPED'
return (category, short, verbose)
category = report.outcome
verbose = category.upper()
return (category, short, verbose)
Теперь при выполнении тестов не будут печататься короткие буквы результата (.sxFE
). Код немного многословен, но обрабатывает все стандартные результаты, определенные в платформе.
отключить подробные результаты
При работе в подробном режиме pytest
печатает результат вместе с именем контрольного примера:
$ pytest -sv
=================================== test session starts ===================================
...
test_spam.py::test_spam PASSED
test_spam.py::test_eggs FAILED
test_spam.py::test_bacon SKIPPED
test_spam.py::test_foo xfail
...
Если вы удалите установку строк verbose
из вышеуказанного крючка impl (оставив для него пустую строку), pytest
также прекратит печать результатов в подробном режиме:
import pytest
def pytest_report_teststatus(report):
category, short, verbose = '', '', ''
if hasattr(report, 'wasxfail'):
if report.skipped:
category = 'xfailed'
elif report.passed:
category = 'xpassed'
return (category, short, verbose)
elif report.when in ('setup', 'teardown'):
if report.failed:
category = 'error'
elif report.skipped:
category = 'skipped'
return (category, short, verbose)
category = report.outcome
return (category, short, verbose)
$ pytest -sv
=================================== test session starts ===================================
...
test_spam.py::test_spam
test_spam.py::test_eggs
test_spam.py::test_bacon
test_spam.py::test_foo
...
введение пользовательского режима отчетности с помощью переключателя командной строки
Приведенный ниже пример отключит печать коротких и подробных результатов, когда из командной строки будет передан флаг --silent
:
import pytest
def pytest_addoption(parser):
parser.addoption('--silent', action='store_true', default=False)
def pytest_report_teststatus(report):
category, short, verbose = '', '', ''
if not pytest.config.getoption('--silent'):
return None
if hasattr(report, 'wasxfail'):
if report.skipped:
category = 'xfailed'
elif report.passed:
category = 'xpassed'
return (category, short, verbose)
elif report.when in ('setup', 'teardown'):
if report.failed:
category = 'error'
elif report.skipped:
category = 'skipped'
return (category, short, verbose)
category = report.outcome
return (category, short, verbose)