Перенаправление всех типов исключений и журналов стандартного вывода в файл во время выполнения теста - Python 3 - PullRequest
0 голосов
/ 07 февраля 2019

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

Я выполняю свой скрипт тестирования на python, используя pytest, который генерирует файл xml с точными даннымия хочу.Проблема в том, что этот файл генерируется сразу после завершения теста, а не во время его выполнения, как я хочу.

Вот команда, с которой я выполняю свой тест:

python -m pytest test_signout.py --junitxml ./results/TestsOut.xml -vs

Я попытался перенаправить stdout в файл с успехом, но, конечно, он не содержит никаких подробностей, связанных с исключениями, такими как ошибки подтверждения, которые я хочу получить.

Iпопробовал тот же метод для stderr, но файл остается пустым.

Вот что я пытаюсь сделать:

@contextmanager
def redirected_stdout(filename):
    original_stderr = sys.stderr
    sys.stderr = open(filename, 'at')
    try:
        yield
    finally:
        sys.stderr = original_stderr

Я использую этот метод путем добавленияследующую команду в начале каждого из моих методов, и затем я включаю весь свой код в это:

with redirected_stdout("./results/TestsOut.log"):

Есть ли способ, как можно зарегистрировать как stderr, так и stdout во время выполнения илиЕсть ли другой способ достичь того, чего я хочу?

После того, как я сгенерирую этот файл, я планирую в качестве последнего шага моего теста прочитать его и передать его в решение управления тестированием, которое я использую.


UPDATE : Я изменил stderr на stdout и добавил file=sys.stdout в конце всех операторов печати, которые находятся в предложениях except, и теперь эти данные печатаются в нужном мне файле.Я не получаю весь вывод, по крайней мере, я получаю исключения.Если есть лучший способ сделать это, пожалуйста, дайте мне знать.

...