?

Log in

Итак, теперь задача следующая: заставить Jenkins красиво рапортовать об ошибках при выполнении тестов. Вопрос о том, как отделить Failures от Errors, чтобы письма счастья не приходили тогда, когда тест валится из-за неправильных входных данных, я решила с помощью markTestIncomplete(). А вот с красивым выводом на консоль пока не разобралась. Гугл рекомендует формировать отчёты в xml. А вот как просто и ясно вывести на консоль текст из серии "Ошибка в таком-то тесте, когда делается то-то и то-то" - хз. Пока что единственная мысль - тупо добавить всякие printf, но хотелось бы, конечно, решить это как-то покрасивее, чтобы не было того текста, который формирует сам phpunit. Мб, кто-нибудь может подсказать, в какую сторону копать и с чем ковыряться? :)

Tags:

Firefox и прокси

Столкнулась с такой проблемой: при запуске selenium-тестов в файрфоксе под убунтой браузер каждый раз требовал подтвердить логин-пароль для прокси.

Мысль 1: поковыряться с настройками прокси при запуске Selenium RC. Нашла следующие параметры для запуска из терминала:

java -Dhttp.proxyHost=<proxy host> -Dhttp.proxyPort=<proxy port> -Dhttp.proxyUser=<proxy User> -Dhttp.proxyPassword=<proxy password>  -jar selenium-server.jar

Не помогло. Файрфокс всё равно требовал вводить пароль и логин.

Мысль 2: в процессе гугления вышла на пост от dumtest , из которого узнала, что таким способом можно настроить прокси только для IE, а для firefox имеет смысл создать отдельный профиль, и запускать селениум с параметром

-firefoxProfileTemplate "путь к профилю"

Отлично. Теперь firefox помнит мои логин и пароль, но при каждом запуске требует нажать кнопочку "ОК", дабы их подтвердить!

Мысль 3: нажимать кнопочку "ОК" средствами селениума. Благо, ко мне вовремя пришла Мысль 4: тупо поискать плагинчик для файрфокса, который собственно и избавит меня от этого кликания. И такой плагин нашёлся: AutoAuth 2.1. Аминь.

Первый тест и dataProvider

Вчера ковырялась с первой полузадачкой на собственно тестирование. Суть полузадачки: написать тест, который будет сравнивать цену продукта на сайте с ценой продукта в магазине, на который потенциальный покупатель перенаправляется по ссылке "купить". Тут всё прозрачно. Момент, несколько усложняющий задачу - тестируется некоторое множество сайтов. Т.е., имеется один тест-метод и массив данных, подающихся ему на вход.

Первые шаги существенно ускорила вот эта статья с хабра. Мораль: PHPUnit предоставляет очень полезный метод - провайдер данных, который и обеспечивает подачу тесту разных наборов данных на каждой итерации. Тут всё просто:
  1. В тест-классе прописываем тег
        /**
        * @dataProvider providerName
        */
  2. Описываем массивы данных в return'е в providerName.

Дальше реализация задачки - дело техники. Упомянуть стоит разве только то, что опытным путём я обнаружила, что с помощью провайдера данных нельзя передать данные setUp'у. Я сначала хотела передавать домены в setUp, чтобы они прописывались в setBrowserUrl() - не вышло. В итоге в setBrowserUrl, без которого сервер не запускается, тупо написала google.com, а домены подавала уже в тест-метод.

За сим всё)

Полезные мелочи:
  • Мимоходом наткнулась на этот материальчик, откуда я узнала, что настройки браузера (которые используются Selenium-сервером) можно задавать не только в setUp(), но и в свойстве класса $browsers.
  • Firebug forever - руками XPath'ы расписывать не пришлось)
Итак, первым шагом на пути к освоению дао тестирования стала, естественно, установка и настройка рабочего NetBeans. Казалось бы, скачал, поставил и радуйся... Но не с моим счастьем. Итак, экскурс по моим ошибкам и по поиску их решений:




#1 Порядок установки
Основной головной болью стало то, что NetBeans в упор не видел PHPUnit. Попытка первая: я сначала поставила NetBeans и только потом XAMPP. О путях к php не задумывалась, но видимо проблема была именно в них. Попытка вторая: дома на ноуте получилось так, что XAMPP закачался быстрее Netbeans'a, ну и установила я их в соответствующем порядке. Добавила в сценарии PHPUnit в настройках C:\xampp\php\phpunit.bat, после чего всё увидилось.
 
#2 Обновление PHPUnit
Далее оказалось, что версия PHPUnit, предусмотренная в XAMPP морально устарела (что-то вроде 2.6). Соответственно возникла проблема с обновлением. По фен-шую надо было запустить go-pear.bat, и далее по инструкции. При первом же запуске батника возникла ошибка (впрочем, предусмотренная этой самой инструкцией):

phar "C:\php5\PEAR\go-pear.phar" does not have a signature
Warning: require_once(phar://go-pear.phar/index.php): failed to open stream: pha
r error: invalid url or non-existent phar "phar://go-pear.phar/index.php" in C:\
php5\PEAR\go-pear.phar on line 1236
по ссылке же предусмотрен и костыль: текст файла следовало заменить на:

@ECHO OFF
set PHP_BIN=php.exe
%PHP_BIN% -d output_buffering=0 -d phar.require_hash=0 PEAR\go-pear.phar
pause

после этого всё должно было заработать. У меня же продолжала выводиться абсолютно идентичная ошибка. Ну ладно. Подумала я и решила в итоге тупо запустить pear из-под консоли. Запустился. Следующий шаг: 

pear channel-discover pear.phpunit.de
Результат: channel discovery failled. Немного гугления, и появилось предположение: мб прокси? Теперь знаю полезную команду:

pear config-set http_proxy http://username:password@yourproxy:port
Проставила всё необходимое, добавила необходимые зависимости и, в итоге, получила рабочий обновлённый PHPUnit 3.5.13 :)
 
 
Итого: первый, работающий на моей машине простенький Selenium-тест! :)


Полезные мелочи:
  • Переменные среды под виндой обновляются только после перезагрузки

ЗЫ: Набрела на забавный ресурс, автоматически переведённый гуглом. "Груша установки" улыбнула)