Захват / перенаправление вывода консоли в файл - PullRequest
0 голосов
/ 29 ноября 2018

Итак, я полагаю, что эта проблема может быть применена к любому файлу Python, генерирующему журналы для консоли.

Я пытаюсь захватить вывод, сгенерированный во время выполнения теста поведения (весь код находится в python3.x).

Или точнее: я пытаюсь записать сгенерированный в реальном времени вывод консоли в файл для конкретной функции, представляющей интерес в коде Python.

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

Я обычно делаю behave data_base_scenarios.feature без кавычек в Ubuntu18,04.Я хотел бы захватить весь вывод, как он направлен на консоль в файл.

В StackOverflow, после поиска некоторое время, я попробовал некоторые из методов, описанных здесь: Захват stdout в том жепроцесс в Python .Я также нашел это: https://capturer.readthedocs.io/en/latest/

К сожалению, я не вижу ничего захваченного.Я позаботился о настройке среды поведения для создания журналов.Например, все эти флаги установлены соответствующим образом и явно для генерации выходных данных: context.config.stdout_capture = True, context.config.log_capture = True.Что мне не хватает в поведенческой среде.

Платформа поведения также предоставляет переменную внутри контекста.Его "context.stdout_capture".Но, к сожалению, он ничего не содержит.

Короче говоря, "Behave" печатает на консоли

  Captured logging:
    INFO:database.system.status: MyDatabase is online.
    INFO:database.system.status: MyDatabase is now offline.
    INFO:database.system.status: MyDatabase has now initiated.

Я просто хочу вывести вышеупомянутый вывод консоли "Captured Logging" в файл для анализа.

Как я могу это сделать?Пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 29 ноября 2018

Так что это зависит от того, как вы это делаете, но если вы используете behave_main, то вы можете сделать что-то вроде следующего:

from behave.__main__ import main as behave_main

args = ['--outfile=/path/to/your/log/directory/output.log']
behave_main(args)

Если вы выполняете свои тесты черезкомандной строки, затем используйте флаг -o или --outfile и добавьте свое имя журнала.

...