Webdriver + Java + TestNG
Собрала пакет из 20 тестов.
По отдельности тесты запускаются замечательно, но при попытке запустить пакет целиком начинаются недоразумения, если так можно выразиться.
Каждый тест содержит функционал залогиневания в начале и разлогиневания в конце, так вот если тест #5 падает, браузер не закрывается и следующий тест #6 вводит логин и пароль в уже залогиненую учетку, в общем, при падении какого-либо теста все остальное тоже падает (
@AfterSuite(alwaysRun = true)
public void tearDown() {
if (driver != null) {
driver.quit();
}
}
у меня такой tearDown был
разлогин был отдельным методом protected void spologout() {}
добавила разлогин перед driver.quit();
получилось
@AfterTest(alwaysRun = true)
public void tearDown() {
if (driver != null) {
logout();
driver.quit();
}
}
все равно при падении, нет разлогина и driver.quit(); тоже судя по всему не происходит, так при запуске следующего теста юзер уже залогинен и попытка залогинеться снова
А сам browser закрываеться ? Может не та аннотация . Илт вообще cookies @AfterMethod бозначают методы, которые исполняются каждый раз после исполнения тестового метода. @AfterTest обозначают методы, которые исполняются единожды после исполнения теста(тот, который включает в себя тестовые классы, не путать с тестовыми методами).
по одному запускаю из Eclipse и пачкой запускаю из него же.
на данном этапе просто делаю тесты и учусь за одно
все сделала по семинарам господина @barancev
настроила maven, git, jenkins локально
не запускала еще из командной строки
Debug у меня работет, но всегда доходит до точки остановки и если делаю дальше выполнение по шагам, то всегда Source not found на вкладке Invoker.class
при дебаггинге в метод заходит, но если встречает точку остановки Toggle Breakpoint то никогда не идет дальше по шагам, даже если ошибки никакой нет
если ставлю @AfterTest то никакой разницы не видно и отличий от @AfterSuite
если ставлю @AfterClass то выполняется только один тест, дальше ошибка The FirefoxDriver cannot be used after quit() was called.
запускаю пачкой через package.xml, потому что некоторые тесты в группе "BUG"
@Diana, прислушайся к совету @alexkuzpro - Before и After аннотации должны быть симметричными. То есть, если Before Method, то и After Method - это позволит открывать новый браузер перед запуском теста (метода тестового класса) и закрывать браузер после его выполнения. У меня например сейчас так сделано, нормально работает.
Если надо, чтобы браузер открывался один раз на весь класс тестов и закрывался после его завершения, то и использовать тогда BeforeClass и AfterClass и т.д. Зависит от того как у тебя организованы тесты
Не обязательно аннотации должны быть симметричными. В данном случае перед каждым классом драйвер инициализируется путём обращения к фабрике, но после завершения класса он не останавливается, и следующий класс имеет возможность его повторно использовать. А при завершении сьюта драйвер останавливается (хотя правильнее было бы сделать WebDriverFactory.dismissAll(), если это используется моя реализация фабрики).
И уж точно не нужно открывать браузер перед каждым методом и закрывать после каждого метода, так большая часть времени будет тратиться не на выполнение тестов, а на запуск браузеров.