Будут вопросы - попробую помочь.
Посмотрите, пожалуйста, пример теста:
<?php
class RegistrationTest extends WebTestCase
{
public function testRegistrationPositiv()
{
$data = array(
//Проверяем фамилию
array(
'lastname' => 'Кириллицаев',
),
array(
'lastname' => 'YDJDKJI',
),
array(
'lastname' => 'и',
),
array(
'lastname' => 'Кириллицаев123456789Кириллицаев1234567891234567890',
),
//Проверяем email's
array(
'email' => time().'@2jfjf.wefjk'
),
array(
'email' => time().'kf.kfd.fkdfk@jf.jf.wefjk'
),
array(
'email' => time().'kf-fkdfk@jf-jf.wefjk'
),
array(
'email' => time().'kf_fkdfk@jf_jf.wefjk'
),
array(
'email' => time().'kfdfdfdsfs.dkfdfdsfsdfdfdsfdfk@jfdfdfdfdfdfdfdfdfdfdfjf.wfdsfsdffdfddfdefjk'
),
//Проверяем пароль
array(
'password' => 'q'
),
array(
'password' => '123456789012345678901234567890'
),
array(
'password' => 'GLJIGIDFLGJFDG'
),
);
foreach($data as $item)
{
var_dump($item);
$page = new MainPage($this,true);
$page->clickRegistrationBtn();
$phone = isset($item['phone']) ? $item['phone'] : time();
$email = isset($item['email']) ? $item['email'] : $phone.'@tst.tst';
$password = isset($item['password']) ? $item['password'] : '12345678';
$lastname = isset($item['lastname']) ? $item['lastname'] : 'BabkinIO';
$page->typeRegUserName($lastname);
$page->typeUserPhone($phone);
$page->typeUserEmail($email);
$page->typeUserPassword($password);
$page->clickRegSubmitBtn();
sleep(2);
$this->assertTextPresent('Регистрация прошла успешно!');
$page->loginAs($email,$password);
sleep(2);
$this->assertTextPresent('Ваш адрес электронной почты');
}
}
}
Покритикуйте, пожалуйста. Допустимо ли вообще писать тесты в таком виде, или нужно использовать какую-то другую модель?
Суть в том, что различные позитивные данные попадают в одну и ту же функцию. Но возникает проблема: когда тест валится, во-первых, не понятно, на каких именно тестовых данных он завалился, во-вторых, на ошибке прекращается выполнение теста.