Как можно просто отправить информацию на стандартный вывод в тесте? - PullRequest
11 голосов
/ 28 мая 2011

Похоже, что просто поместить say, print и т. Д. В .t не работает. Вывод скрыт. Итак, когда я использую Test::More и Test::Tester, как я могу просто напечатать что-нибудь? Я хочу, чтобы я мог поиграть с некоторым кодом, определяя, как его протестировать. примечание: все в порядке, если оно отправлено в stderr или доступно только для просмотра с подробным описанием. Также я высушил, используя diag, но, похоже, это не сработало нигде в тесте.

1 Ответ

14 голосов
/ 28 мая 2011

Если вы запустите тестовый скрипт напрямую, вы увидите вывод print - тесты - это всего лишь Perl-код.Однако, если вы запускаете свои тесты с использованием жгута, то, что вы увидите в выходных данных, будет определяться жгутом, особенно его уровнем детализации, и тем, будете ли вы печатать до STDOUT или STDERR.

Длядругой способ печати сообщений в тестах, см. Диагностика в документации по Test::More, в частности:

diag(...);
note(...);

Эксперимент с таким скриптом быстро продемонстрирует, как все работает:

# Example usages:
#     perl     some_test.t   # We see everything in output.
#     prove    some_test.t   # We see only diag() and STDERR.
#     prove -v some_test.t   # Everything again.

# In some_test.t
use strict;
use warnings;
use Test::More;

pass;

diag("diag()");
note("note()");
print        "STDOUT\n";
print STDERR "STDERR\n";

done_testing;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...