Perl: тестирование читателя ввода?

Есть ли способ автоматически проверить с помощью стандартных модулей Test и т. Д., Правильно ли Perl-программа считывает ввод, например, с STDIN? Например, тестирование программы, которая читает два целых числа из STDIN и печатает их сумму.

2 ответа

Неясно на 100%, что вы имеете в виду, поэтому я предполагаю, что вы хотите написать тестовый скрипт, который тестирует вашу основную программу, которая в рамках теста должна иметь тестовые входные данные, передаваемые через STDIN.

Вы можете легко сделать это, если ваша программа выводит то, что читает. Вам не нужен специальный тестовый модуль - просто:

  1. Вызовите свою программу, которую вы тестируете, с помощью системного вызова

    • перенаправить STDIN и STDOUT тестируемой программы в ваш тестовый скрипт, используя

      • IPC::Open2 модуль для открытия обеих сторон через каналы к файловым дескрипторам,

      • ... ИЛИ, соберите команду для перенаправления в / из файлов и чтения / записи файлов в тестовом скрипте

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

Если вы хотите проверить, подключен ли STDIN к терминалу, используйте -t, как в:

if( -t STDIN ){
    print "Input from a terminal\n";
}else{
    print "Input from a file or pipe\n";
}

См. http://perldoc.perl.org/perlfunc.html.

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