Я использую Eclipse EPIC IDE для написания некоторых скриптов Perl CGI, которые вызывают некоторые модули Perl, которые я также написал. EPIC IDE позволяет мне настроить Perl CGI «запустить конфигурацию», которая запускает мой сценарий CGI. И тогда у меня есть Selenium, и один из моих тестовых файлов модулей запускает некоторые команды Selenium для запуска моего скрипта cgi через его шаги. Но отчет о покрытии из теста Module :: Build dispatch 'testcover' не показывает, что какой-либо из моего кода модуля был выполнен. Это было выполнено с помощью моего скрипта cgi, но я думаю, что CGI-скрипт запускался вручную и не выполнялся непосредственно моим тестовым файлом, поэтому, возможно, именно поэтому покрытие не распознается. Есть ли способ сделать это правильно, чтобы я мог интегрировать Selenium и единичные тестовые файлы и покрытие кода как-нибудь?Как получить покрытие кода скрипта Perl CGI при выполнении Selenium?
ответ
Я не знаком с Selenium или EPIC, но одно обходное решение (за исключением случаев, когда кто-то приходит с более естественным решением) состоит в том, чтобы просто включить «-MDevel :: Cover» в командную строку конфигурации запуска.
Хуже приходит к худшему, добавить некоторые условной логики в BEGIN {} блок, что - на основе некоторой переменной селеном среды - условно делает use Devel::Cover
UPDATE:
Должна быть обеспечена возможность подавить вывод из Devel :: Обложка с использованием -MDevel::Cover=-silent,1
$ perl5.8 -MDevel::Cover -e '{1;}'
Devel::Cover 0.64: Collecting coverage data for branch, blah
Selecting packages matching:
Ignoring packages matching:
blah, blah, blah
---------------------------- ------ ------ ------ ------ ------ ------ ------
File stmt bran cond sub pod time total
---------------------------- ------ ------ ------ ------ ------ ------ ------
Total n/a n/a n/a n/a n/a n/a n/a
---------------------------- ------ ------ ------ ------ ------ ------ ------
$ perl5.8 -MDevel::Cover=-silent,1 -e '{1;}'
$
Я пробовал оба решения, и ни один из них не работал. Когда я помещаю -MDevel :: Cover в командную строку конфигурации запуска cgi, этот новый модуль сгенерировал некоторый текст в stdout, который исказил заголовок скрипта cgi. Когда я добавил использование Devel :: Cover в свой тестовый файл unit, который использует селен для реализации скрипта cgi, он дал мне похожие результаты, как я уже делал, начиная с Module :: Build dispatch testcover ... никакого охвата моего модуля, который я знаю скрипт cgi вызывает подпрограммы. –
@ Kurt - Я не уверен, можно ли отключить DeOp :: Cover IO каким-то удобным способом, но я могу проверить ... – DVK
@Kurt - попробуйте '-MDevel :: Cover = - slient', please – DVK
Я думаю, что я понял это - смотрите мое обновление в ответ – DVK
+1 заставила меня выучить что-то новый И для использования Devel :: Cover :) – DVK