Не важно на каком языке программирования написан сайт или при помощи какого фреймвока он сделан, мы можем написать тесты на php используя PHPUnit + Selenium.
Для этого нам нужно:
- Установить библиотеки PHPUnit и Selenium (https://packagist.org/packages/phpunit/phpunit-selenium)
- Установить веб-драйверы chrome (https://sites.google.com/a/chromium.org/chromedriver/downloads) и firefox ( https://github.com/mozilla/geckodriver/releases).
- Сервер selenium (http://www.seleniumhq.org/download/. Находим блок "Selenium Standalone Server", строку Download version и скачиваем по ней jar файл).
- Нам нужен composer. Если нет, устанавливаем (https://getcomposer.org/download/)
- Написать простой тест, который открывают браузер и кликает там по каким-то элементам.
- Аккаунт на mail.ru (на нем и будем тестировать)
Делаем все это на Ubuntu
Устанавливаем библиотеки PHPUnit и Selenium
Для установки библиотеки PHPUnit и Selenium переходим в папку проекта. Выполняем в консоли команду:
composer require phpunit/phpunit-selenium
Устанавливаем webdriver-а для chrome и firefox
Для этого, скаченные файлы (см. п. 2) нужно поместить в каталог /usr/bin
Запускаем selenuim server
Выполняем в консоли команду:
java -jar имя скаченного файла.jar (например: java -jar selenium-server-standalone-3.0.1.jar)
Пишем код
Задача:
- авторизироваться на сайте mail.ru
- из списка доменов выбрать inbox.ru, если у вас домен не mail.ru, а inbox.ru
В папке проекта (в той, в которую мы загрузили библиотеки PHPUnit и Selenium) создаем класс MailRuTest c именем файла MailRuTest.php
<?php class MailRuTest extends PHPUnit_Extensions_Selenium2TestCase { private $login = 'ваш логин' // указываем без @mail.ru (например: my-login); private $password = 'ваш пароль'; protected function setUp() { /** Выбираем браузер */ $this->setBrowser('firefox'); //$this->setBrowser('chrome'); $this->setBrowserUrl('https://mail.ru'); } public function testAuth() { /** Переходим на страницу авторизации */ $this->url('https://account.mail.ru/login'); /** Указываем логин и пароль в поля авторизации */ $this->byName('Username')->value($this->login); $this->byName('Password')->value($this->password); /** * Если у вашего почтового ящика домен не mail.ru, а, скажем inbox.ru * Выбираем домен из выпадающего списка. * Для этого раскомментируйте код ниже */ /** $this->byClassName("b-dropdown__ctrl")->click(); $this->byCssSelector("a[data-value=\"inbox.ru\"]")->click(); */ /** Кликаем по кнопке */ $this->byClassName('b-login__submit-btn')->submit(); /** Поспим 5 секунд */ sleep(5); } }
Проверяем
Запускаем в консоли:
php vendor/phpunit/phpunit/phpunit MailRuTest.php
Ниже, прикреплен архив с веб-драйверами chrome и firefox + selenuim server, которые стоят у меня. Я использую Ubuntu 15.10 / 64 Скачать
Продолжение следует...
Комментарии
Жду продолжения...
ОтветитьPHPUnit + Selenium2. Часть 2. Авторизация + валидация на mail.ru
ОтветитьУже попробовал. А как выполнить все тесты по очереди, например тест валидации, тест авторизации, тест добавления коммента, ...
ОтветитьЖду 3,4,5,6,7,... n части, будет отличный туториал.
Было бы супер получить что то вроде тестов на реально примере разработки, например пишем блог, делаем тесты под него и весь этот процесс описать от начала до конца.
Это будет отличный пример разработки проекта с юнит тестированием. А то информации делаем тест, пишем функционал полно. А описания и примера как это работает на реальных проектах нет, соответственно понимания тоже нет.
А в целом получил новые зания и опыт, спасибо Константин
Ну это так, просто пожелания
Ответить