Статья является продолжением статьи 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
devreadwrite.com



Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
Комментарии отсутствуют, Вы можете быть первым