Статья является продолжением статьи PHPUnit + Selenium2. Часть 1. Быстрый старт. Авторизация на mail.ru.
Немного теории.
Для тестирования, например авторизации, проверяют все состояния этой формы (введенные данные, пустые, неверные и т.д.). Мы остановимся на некоторых из них. Обычно, если ввели пустое или неправильное значение - html форма должна показать сообщение об ошибке, при тестировании мы проверяем эти сообщения.
Так же, в процессе тестирования, обычно, проверяются данные на наличие или отсутствия чего-то (пустое значение или нет, соответствует ли оно чему-то, является ли булевым и т.д.). В PHPUnit этим занимаются функции, имена которых начинаются со слова assert (здесь можно узнать об этих функциях) например:
/** Проверяем, соответствует ли значение переменной testString слову 'Hello Word' */ $this->assertEquals($testString, 'Hello Word');
такие функции, возвращают в консоль, после выполнения тестирования, информацию например,
если тест не прошел (т.е. в одной из функций assert [в данном случае, во второй]
значение не соответствует предполагаемому):
FAILURES! Tests: 1, Assertions: 2, Failures: 1.
или если, тест прошел успешно, может выводится такой результат
. 1 / 1 (100%) Time: 5.47 seconds, Memory: 3.50MB OK (1 test, 3 assertions)
Задача
- Проверить, правильно ли выводятся ошибки при попытке авторизироваться на сайте с пустыми полями логина и пароля
- Проверяем, вывод ошибок при вводе неправильного пароля
- Проверяем, что мы успешно авторизировались
Пишем код
Мы можем создать новый класс MailRuValidateTest c именем файла MailRuValidateTest.php
<?php /** * Class MailRuTest * Тестирование валидации при авторизации на сайте mail.ru */ class MailRuValidateTest extends PHPUnit_Extensions_Selenium2TestCase { private $login = 'ваш логин'; private $password = 'ваш пароль'; /** * Базовые настройки. Выполняются один раз */ protected function setUp() { $this->setBrowser('firefox'); $this->setBrowserUrl('https://mail.ru'); } public function testAuth() { /** * Проверяем авторизацию спустым занчением полей логина и пароля */ $this->auth('', ''); sleep(2); /** * Переменная, которая будет содержать найденные ошибки */ $errorsValues = null; /** * Ищем элементы, которые имеют класс b-form-field__errors__error_visible */ $items = $this->elements($this->using('css selector') ->value('.b-form-field__errors__error_visible')); /** * Убеждаемся, что мы нашли элементы с текстами ошибок */ $this->assertEquals(2, count($items)); /** * Проверяем сообщения об ошибке логина и пароля */ $this->assertEquals($items[0]->text(), "Поле «Логин» должно быть заполнено"); $this->assertEquals($items[1]->text(), "Поле «Пароль» должно быть заполнено"); /** * Проверяем валидацию с неправильным паролем */ $this->auth($this->login, uniqid()); sleep(2); /** * Переменная, для хранения сообщения об ошибке при вводе неправильного пароля */ $errorWrongPasswordMessage = ''; /** Пытаемся найти HTML элемент, который содержит сообщение об ошибке */ try { $errorWrongPasswordMessage = $this->byClassName('b-login__errors')->text(); } catch (PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) { } /** * Проверяем сообщение об ошибке при неправильном пароле */ $this->assertEquals($errorWrongPasswordMessage, "Неверное имя пользователя или пароль. Проверьте правильность введенных данных."); /** Авторизируемся с реальным логином и паролем */ $this->auth($this->login, $this->password); sleep(2); /** * Проверяем, что мы авторизировались. У нас должен быть элемент title, который должен содержать текст "Воходящие" */ $inbox = $this->byTag('title')->text(); $this->assertTrue(strpos($inbox, 'Входящие') >= 0); } protected function auth($login, $password) { $this->url('https://account.mail.ru/login'); $this->byName('Username')->value($login); $this->byName('Password')->value($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(); } }
Выполеняем тест
php vendor/phpunit/phpunit/phpunit MailRuValidateTest.php
Комментарии
Комментарии отсутствуют, Вы можете быть первым