Вызов Pytest из кода Python

Я пишу скрипт на Python для сбора данных из запущенных тестов в различных условиях. На данный момент я заинтересован в добавлении поддержки Py.Test.

В документации Py.Test четко указано, что запуск pytest внутри кода Python поддерживается:

Вы можете вызвать pytest из кода Python напрямую... действует так, как если бы вы вызывали "pytest" из командной строки...

Тем не менее, документация не описывает подробно возвращаемое значение вызова pytest.main() как предписано. Документация только указывает, как прочитать код завершения вызова тестов.

Какие пределы разрешения данных доступны через этот интерфейс? Этот метод просто возвращает строку, указывающую результаты теста? Поддерживается ли поддержка более дружественных структур данных (например, результат каждого теста, назначенный ключу, пара значений)?

Обновление: изучение структуры возвращаемых данных в REPL показывает, что вызов pytest.main выдает целочисленный тип возврата, указывающий код завершения системы, и направляет побочный эффект (поток результатов теста детализации текста) к стандартному выводу. Учитывая это, предоставляет ли Py.Test альтернативный интерфейс для доступа к результатам тестов, выполненных из кода Python, через некоторую собственную структуру данных (например, словарь)? Я хотел бы избежать перехвата и анализа результата std.out, потому что такой подход кажется подверженным ошибкам.

1 ответ

Решение

Я так не думаю, официальная документация говорит нам, что pytest.main возвращает код ошибки ОС, как описано в примере. Вот

Вы можете использовать флаги pytest, если хотите, даже трассировку (--tb) возможность посмотреть, поможет ли вам какая-либо из этих отметок.

В другом пункте о синтаксическом анализе результата std.out, потому что такой подход кажется подверженным ошибкам. Это действительно зависит от того, что вы делаете. Python имеет много пакетов, чтобы сделать это как subprocess например.

Другие вопросы по тегам