Поток тестов автоматизации с логикой if else в Java - PullRequest
0 голосов
/ 23 января 2019

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

В процессе тестирования прохождения всех уровней я хочу определить в ходе теста в конце каждого уровня, разблокирован ли у пользователя следующий уровень, и либо продолжить тестирование, либо завершить его успешно. Я читал о других реализациях с селеном, и сейчас я использую такой метод:

    public boolean isElementExisting(WebElement element){
    try {
        wait.until(ExpectedConditions.elementToBeClickable(element));
    } catch (Exception e) {
        return false;
    }
    return true;
    }

и использование и, если логика, как в тесте:

    if (isElementExisting(level3Button) == false) {
    driver.quit();
    }

    - rest of the tests follow here.

При использовании driver.quit(); тест автоматически не проходит. Требуемое поведение, которое я ищу, - пройти тест в операторе if (что можно использовать вместо метода driver.quit();)?

Я мог бы просто подогнать весь код для тестирования последующих уровней в отдельных вложенных операторах if / else, но это было бы проблематично, в настоящее время я ищу более практичное решение, например, прохождение теста в определенный момент.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Спасибо за ответ.Я понимаю концепцию статического теста, с добавлением, что тест не должен иметь «известный» результат, но больше того, что он должен иметь «ожидаемый» результат, который должен соответствовать, в том смысле, что он тестирует что-то для проверкиего функциональность.Случай переключения является допустимым сценарием, честно говоря, я не вижу, что происходит после того, как утверждение не выполнено в опубликованном примере (тест также не пройден).Решение, которое я реализовал, состоит в том, чтобы определить, разблокирован ли у пользователя следующий уровень в конце предыдущего с помощью метода, подобного следующему:

    public void isElementExistingAlternateResult(WebElement element) {
    boolean isElementFound = true;
    try {
        wait.until(ExpectedConditions.elementToBeClickable(element));
    } catch (Exception e) {
        isElementFound = false;
    }

    if (isElementFound == true) {
        System.out.println("test is continued...");
    } else {
        Reporter.getCurrentTestResult().setStatus(ITestResult.SUCCESS);
        System.out.println("next level not unlocked.");
    }

Таким образом, только если следующий доступный уровень не найден, тест будет определять это реальное время, и он остановится и пройдет именно в этот момент.Обратите внимание, что это чередует результат неудачного теста с классом TestNG Reporter в:

Reporter.getCurrentTestResult().setStatus(ITestResult.SUCCESS);

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

Преимущество - это супер просто и отлично подходит для тестаслучай приблизительно 500 шагов (делает только некоторые из них "динамическими").

0 голосов
/ 23 января 2019

Тест должен быть статическим в том смысле, что он должен иметь известный результат. В результате метод структурирования и написания теста должен следовать этой логике.

Учитывая то, что было описано выше, я бы написал тест примерно так:

login.asUser(username,password);
// additional logic in here
assertTrue(page.userHasLevelUnlocked("level3"));

тогда метод

public boolean userHasLevelUnlocked(String level){
    switch(level)
        case "level3":
            if(isElementExisting(level3button){
            return true;
            } else {
            return false
            }
}

или что-то в этом роде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...