В общем есть два теста к которых только одна команда отличается.
В одном тесте залогиненный пользователь, а в другом нет.
Команда не в начале а в середине теста.
Реализация у меня такая. Просто передаем параметры разные.
Наверняка есть лучше вариант.
public void presentBook(String login, String pass)throws InterruptedException {
RegistrationPage registrationPage = new RegistrationPage(driver);
LoginPage loginPage = new LoginPage(driver);
// открыть страницу
driver.get("http://site.ru/");
registrationPage.closeLaravel();
// вводим логин, пароль
if (login !="" && pass !="")
{loginPage.selectLoginPass(cartPage.login, cartPage.pass);}
// ну и так далее
driver.quit();
}
@Test
public void testPresentBookNotLoggedInUser() throws InterruptedException{
presentBook("","");
}
@Test
public void testPresentBookLoggedInUser() throws InterruptedException{
presentBook(login, pass);
}
По-моему это не оптимизация, а усложнение логики. Если описывать в каждом методе поведение и с логином и без…
К тому же метод presentBook слишком уж многое делает.
Достаточно разбить его на более мелкие методы по логике, в том числе сделать EnterWithAuth и EntryWithoutAuth да и всё…
Зачем усложнять-то? И зачем в теле теста пытаться всё в один метод запихать? Вот вы прочитав этот метод presentBook понимаете что в тесте вообще происходит с ходу? Я нет.
Через полгода будет непонятно. Ну или покажите это другому человеку - ему будет непонятно.
Да.
И в тесте их вызывать.
Поведение при залогиненном пользователе и нет обычно подразумевает совершенно разное взаимодействие со страницей (за исключением похожих блоков типа меню).
Вот и я о том же - какой смысл в каждый метод копипастить параметры логина и пароля и городить кучу if’ов
Немного не по теме, но самое лучшее - почитать про чистый код, основы программирования, принципы объектно-ориентированного программирования. Потом уже, учитывая эти знания, начать писать тесты.
Думаю, если почитать хотя бы про основные принципы, например Single Responsibility principle, и понять на примере, уже можно сделать лучше, чем в первом посте.