Как получить покрытие кода скрипта Perl CGI при выполнении Selenium?
Я использую Eclipse EPIC IDE для написания некоторых сценариев Perl CGI, которые вызывают некоторые модули Perl, которые я также написал. EPIC IDE позволяет мне конфигурировать Perl CGI для запуска конфигурации, которая запускает мой CGI-скрипт. А затем я настроил Selenium, и один из моих файлов модульного теста запускает несколько команд Selenium, чтобы выполнить мой сценарий cgi через все его шаги. Но отчет о покрытии из диспетчера Module::Build 'testcover' не показывает, что какой-либо код моего модуля был выполнен. Он был выполнен моим сценарием cgi, но я предполагаю, что сценарий CGI был запущен вручную и не был выполнен непосредственно моим файлом модульного теста, поэтому, возможно, именно поэтому покрытие не распознается. Есть ли способ сделать это правильно, чтобы я мог как-то интегрировать файлы Selenium и модульного тестирования и покрытие кода вместе?
1 ответ
Я не знаком с Selenium или EPIC, но один из обходных путей (если / пока кто-то не придет с более нативным решением) - просто включить "-MDevel::Cover" в командную строку конфигурации запуска.
Что еще хуже, добавьте некоторую условную логику в блок BEGIN{}, которая - на основе некоторой переменной окружения селена - условно делает use Devel::Cover
ОБНОВЛЕНИЕ:
Должна быть возможность подавить вывод из Devel:: Cover, используя -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;}'
$