Отключить печать вывода журнала на консоли с помощью pytest

Я пишу тесты, используя pytest, и если моя проверка не пройдена, она генерирует много необходимых журналов. Я использую стандартный модуль ведения журнала Python для регистрации этих ошибок в файле с помощью класса FileHandler. Я использую pytest-html для создания html-отчета. Все работает, как и ожидалось, за исключением того, что pytest записывает сообщения журнала в терминал, что также занимает больше времени, чем фактическое выполнение теста. (Представьте, что на терминале регистрируется около 200 тысяч сообщений журнала).

Есть ли в pytest какой-либо параметр, который отключил бы регистрацию любых журналов в терминале, но по-прежнему собирал и делал эти журналы доступными в отчете html. Было бы желательно регистрировать исключения или ошибки утверждений, если это возможно.


person Saurabh Rai    schedule 14.05.2021    source источник
comment
pytest -p no:logging отключает запись журнала.   -  person hoefling    schedule 14.05.2021
comment
pytest -p no:logging — хороший вариант, когда мне не нужны журналы в консоли или отчет pytest-html. К сожалению, это не мое текущее требование. Спасибо.   -  person Saurabh Rai    schedule 15.05.2021


Ответы (1)


Возможно, вы сможете настроить вывод с помощью параметра --show-capture.

От pytest --help:

--show-capture={no,stdout,stderr,log,all}
  Controls how captured stdout/stderr/log is shown on failed tests. Default is 'all'.

Если вам нужен более детальный контроль того, что вы отфильтровываете, вам может потребоваться изучить саму конфигурацию ведения журнала (изменить захваченный уровень журнала и т. д.).

person Samuel Dion-Girardeau    schedule 14.05.2021
comment
Мне пришлось использовать --show-capture=stdout. Это делает именно то, что я хотел. Спасибо - person Saurabh Rai; 15.05.2021