Сообщить об ошибке.

Управление выводом отчета о тестах pytest в Python

Управление детализацией сводного отчета тестов pytest.

Для управления детализацией сводной информации по тестированию pytest в конце тестового сеанса используется опция командной строки -r, что упрощает получение четкой картины всех сбоев, пропусков, xfails и т. д. Опция CLI -r, после себя, принимает ряд символов.

По умолчанию, для вывода итогового списка сбоев и ошибок используется комбинация -rfE. Например, если запустить тесты с опциями: $ pytest -ra, то запустятся все тесты, кроме успешных.

С опцией -r можно использовать более одного символа. Например, для того, чтобы увидеть только тесты, завершившиеся ошибкой и пропущенные тесты, можно выполнить: $ pytest -rfs

Полный список доступных символов, которые можно использовать с опцией -r:

  • f: упавшие (добавляет раздел FAILED);
  • E: ошибки (добавляет раздел ERROR);
  • s: пропущенные (добавляет раздел SKIPPED);
  • x: тесты XFAIL (добавляет раздел XFAIL);
  • X: тесты XPASS (добавляет раздел XPASS);
  • p: успешные (passed);
  • P: успешные (passed) с выводом.

Есть и специальные символы для пропуска отдельных групп:

  • a: выводить все, кроме комбинации pP;
  • A: выводить все;
  • N: ничего не выводить (может быть полезным, т.к. по умолчанию используется комбинация fE).

Использование символа p добавляет в сводный отчет успешные тесты, а P добавляет дополнительный раздел "пройдены” (PASSED) для тестов, которые прошли, но перехватили вывод: $ pytest -rpP.

Управление выводом отчета трассировки.

Использование опции командной строки --full-trace приводит к тому, что при ошибке печатаются очень длинные трассировки (длиннее, чем при --tb=long). Опция --full-trace также гарантирует, что сообщения трассировки будут напечатаны при прерывании выполнения c клавиатуры с помощью Ctrl+C. Такое поведение полезно, если тестирование (выполнение всех тестов) занимает слишком много времени, и чтобы узнать, где они зависли, нужно выполнить прерывание с клавиатуры. По умолчанию, при прерывании с клавиатуры, трассировка не выводится (т.к. pytest ловит исключение KeyboardInterrupt).

Дополнительные опции командной строки для управления выводом трассировки:

  • $ pytest --showlocals или $ pytest -l: показывает локальные переменные в сообщениях;
  • $ pytest --tb=auto: используется pytest по умолчанию. Показывает "расширенный" вывод для первого и последнего сообщений, и "короткий" для остальных;
  • $ pytest --tb=long: показывает исчерпывающий, подробный формат сообщений;
  • $ pytest --tb=short: показывает сокращенный формат сообщений;
  • $ pytest --tb=line: показывает только одну строку на провальный тест;
  • $ pytest --tb=native: показывает стандартный формат библиотеки Python;
  • $ pytest --tb=no: никаких сообщений;