Здравствуйте дорогие тестировщики.
Присутствовал на докладе Алексея Баранцева (26 февраля, Киев).
Он не однократно повторял, что браузер нужно открывать всего один раз во время выполнения всех тестов, но спросить как это реализуется я не успел. Пишу тесткейсы с помощью PHPUnit, но ввиду того, что он унаследовал от JUnit предпологаю, что решине проблемы похожи.
Вот код:
class MyTestCase extends PHPUnit_Extensions_SeleniumTestCase {
function setUp() {
$this->setBrowser("*firefox");
$this->setBrowserUrl("http://my_site.com/");
}
function testLogin(){
$this->open("/login.php");
//...
}
function testLogout(){
$this->open("/logout.php");
//...
}
}
Проблема в том, что для каждого тестового метода производится своя инициализация setUp(). В PHPUnit manual копался, но так ничего и не нашел. Кат произвести инициализацию для пачки тестовых методов? Буду очень вам признателен, если вы окажите свою помощь.
Заранее спасибо.
Также был на конференции в Киеве.
Столкнулся с похожей проблемой для своего проекта на Ruby. Автоматизация ведется с помощью RSpec.
Проблема была также в том чтобы использовать не закрытую сессию для тестов запущенных по-отдельности (последовательными процессами)
Решил проблему следующим образом:
1) Добавил возможность устанавливать id сессии в Selenium::Client::Driver
2) Добавил возможность сохранять/читать/удалять id сессии в/из файл(а)
Далее работа ведется следующим образом:
- если в файл сессии существует -> установить id сессии для клиента
- если нет -> создать новую сессию (с сохранением id сессии)
- на установленной в первом пункте сессии выполняю очистку куки (вместо logout, т.к. быстрее), если сервер не отвечает в течении 3 секунд или ошибка - создаю новую сессию (с сохранением id сессии)
Эффект - примерно 30 секунд на каждый тест экономии ( 140 вместо 170 ).
P.S. Алексею, спасибо за отличный доклад и повод для размышлений :)