Как перенаправить вывод тестов на нос в текстовый файл? - PullRequest
14 голосов
/ 01 марта 2012

Я пробовал "носовые тесты p1.py> text.txt", и это не работает.

Как правильно передать этот вывод на консоль?

Ответы [ 3 ]

19 голосов
/ 01 марта 2012

Попробуйте:

nosetests -s p1.py > text.txt 2>&1

Последнее --obvious - подсказка: если вы не находитесь в каталоге с тестовым файлом, добавьте перед .py файлом.

2 голосов
/ 28 августа 2018

Я хочу добавить больше деталей здесь.

В моей версии (v1.3.7) Нос входит в систему stderr вместо ожидаемого stdout. Почему нос входит в систему stderr вместо stdout, мне не понятно. Поэтому решение состоит в том, чтобы перенаправить поток stderr в ваш файл. Символ перенаправления отправляет stdout по умолчанию. Флаг --nocapture, -s используется, чтобы не дать носу захватить ваши собственные операторы print.

$ nosetests -s -v test/ > stdout.log 2> stderr.log

Стоит отметить, что хотя stderr кажется сброшенным на каждом выходе, stdout не сбрасывается, поэтому, если вы tail используете файл stdout.log, вы не увидите вывод до тех пор, пока или ОС решает сбросить. Поэтому, если вы считаете, что это не работает, попробуйте выйти из тестового режима, что приведет к сбросу stdout.

См. Этот ответ о перенаправлении потоков Linux .

1 голос
/ 01 марта 2012

параметр -s - не захватывает стандартный вывод

...