есть два теста где разное только одно поле ... способы оптимизации

В общем есть два теста к которых только одна команда отличается.
В одном тесте залогиненный пользователь, а в другом нет.
Команда не в начале а в середине теста.
Реализация у меня такая. Просто передаем параметры разные.
Наверняка есть лучше вариант.

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);
    }

потоки сознания на форум продолжаются :sweat_smile:

1 лайк

По-моему это не оптимизация, а усложнение логики. Если описывать в каждом методе поведение и с логином и без…

К тому же метод presentBook слишком уж многое делает.

Достаточно разбить его на более мелкие методы по логике, в том числе сделать EnterWithAuth и EntryWithoutAuth да и всё…

Зачем усложнять-то? И зачем в теле теста пытаться всё в один метод запихать? Вот вы прочитав этот метод presentBook понимаете что в тесте вообще происходит с ходу? Я нет.

2 лайка

Ну у меня сам метод находится прям в файле с тестом … По-этому в принципе понятно все.

EnterWithAuth и EntryWithoutAuth

Это типа сделать методы которые будут отвечать за залогинивание?

Просто какой смысл копипастить?

Через полгода будет непонятно. Ну или покажите это другому человеку - ему будет непонятно.

Да.
И в тесте их вызывать.
Поведение при залогиненном пользователе и нет обычно подразумевает совершенно разное взаимодействие со страницей (за исключением похожих блоков типа меню).

Вот и я о том же - какой смысл в каждый метод копипастить параметры логина и пароля и городить кучу if’ов :wink:

Ну тогда может вообще перегрузить какой нибудь метод? Сделать два метода с одним названием, один принимает переменные логин. пароль, а второй нет )))

Немного не по теме, но самое лучшее - почитать про чистый код, основы программирования, принципы объектно-ориентированного программирования. Потом уже, учитывая эти знания, начать писать тесты.

3 лайка

Можно и так. Просто логику надо разносить, а не пилить все в одно место.
Потом проще жить будет

Читать это можно долго, а кушать хочется сейчас :slight_smile:

4 лайка

Думаю, если почитать хотя бы про основные принципы, например Single Responsibility principle, и понять на примере, уже можно сделать лучше, чем в первом посте.

Параметризированные тесты делай. @ParameterizedTest