Как разделить переменные между тестами в TestNG? - PullRequest
0 голосов
/ 17 января 2019

У меня есть тестовый класс Login, который имеет положительные и отрицательные тесты для Login. Результат для положительного случая - получить токен в ответе.

Кроме того, у меня есть еще один класс Functionality, в котором есть тесты для некоторых функций, которые доступны для пользователей при входе в систему.

Как получить токен из положительного теста входа в систему для проверки функциональности?

Я нашел только одно решение:

  • сделать токен статической переменной в классе Login
  • после положительного теста входа в систему переменная токена должна быть инициализирована из ответа
  • во всех тестах функциональности следует добавить зависимость от положительного теста входа в систему

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

Ответы [ 3 ]

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

Мы можем использовать TestNG's ITestContext.

Например:

в тестовом классе,

    ctx.setAttribute("TOKEN", token);

в другом классе для того же теста,

    String token = ctx.getAttribute("TOKEN");

Взгляните на этот пример.

http://www.testautomationguru.com/selenium-webdriverreusable-tests-testng/

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

Вы можете передать параметры в XML-файл вашего бегуна. А также Вы можете использовать свойства внешних файлов для сохранения значений.

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

Возможным решением может быть перемещение функции входа в отдельное место и ее повторное использование в Входе и Функциональных тестах. Например, вы можете извлечь токен до Функциональных тестов с использованием TestNG перед аннотациями.

class RequestHelper {

  public static io.restassured.Response login(String username, String password) {
    Response response;
    //some code to get login response
    return response;
  }
}

class LoginTest {

 @Test
 public void shouldLogin() {
   Response loginResponse = RequestHelper.login("username", "password");
   //assertions that response is valid
 }
}

class FunctionalTest {

  private String token;

  @BeforeClass
  public void getToken(){
     Response response = RequestHelper.login("username", "password");
     //Extracting token from response here (depends on how token is returned)
     token = response.then().extract().jsonPath().getString("token");
  }

  @Test
  public void functionalTest(){
    //Use token here
  }
}

Также выполнение Функциональных тестов зависит от успеха положительных Вход в систему тестов также может быть хорошей идеей. Таким образом, если вы положительно Логин тесты не пройдены Функциональные тесты не будут выполнены.

...