Подскажите пользователя во время юнит-теста в Perl - PullRequest
7 голосов
/ 03 октября 2011

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

Я хотел бы запросить эту информацию при запуске набора тестов и пропустить эти тесты, если пользователь отказывается их предоставлять.

Какой лучший способ справиться с этим?

Спасибо

Ответы [ 2 ]

7 голосов
/ 03 октября 2011

Вы ищете ExtUtils::MakeMaker::prompt?

Другие полезные функции

приглашение

my $value = prompt($message);
my $value = prompt($message, $default);

Функция prompt () предоставляет простой способ запрашивать пользовательский ввод, используемый для написания make-файла. Он отображает сообщение $ как приглашение для ввода. Если указан $ default, он будет использоваться по умолчанию. Функция возвращает значение $, выбранное пользователем.

Если prompt () обнаруживает, что он не работает в интерактивном режиме и в STDIN ничего нет, или если для переменной среды PERL_MM_USE_DEFAULT задано значение true, $ default будет использоваться без запроса. Это предотвращает блокировку автоматических процессов при вводе пользователем.

Если $ default не указано, вместо него будет использоваться пустая строка.

3 голосов
/ 03 октября 2011

Я возьму другой подход к этому.Почему именно вам нужен пользователь в качестве посредника для этого - особенно для автоматизированных тестов?Значительно лучшим подходом (из моего собственного опыта) является выполнение одного из следующих действий:

  • Сделать сервер (имя хоста / порт) каким-либо образом обнаруживаемым при тестировании.Это может быть либо подлинное обнаружение, либо регистрация самого сервера, либо, черт возьми, какая-то служба конфигурации.Учитывая, что клиенты сервера в реальном мире должны иметь возможность подключаться к серверу, такая логика обнаружения (опять же, наихудший сценарий, представляющий собой файл конфигурации) уже должна существовать.

  • Для действительно сложного случая позвольте тестовому устройству использовать возможность запуска тестового экземпляра сервера на тестовом порту, если он не запущен.

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

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