Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как передавать переменную из response body в request ?

testng
Теги: #<Tag:0x00007f7b69072498>

#1

Привет ! Есть 2 связанных пост реквеста, login и verify разбитых на 2 @Test . Юзаю Rest Assured

@Test
public void getPhone(){
Map<String,String> phone = new HashMap<>();
        phone.put("phone", "111111");
        Response response = expect().statusCode(200)
                .given().spec(spec)
                .body(phone)
                .when()
                .post("/login");

из его response body я делаю extract phone_id (динамическая переменная)

responseBody = response.getBody().asString();
JsonPath jsonPath = new JsonPath(responseBody);
phone_id = jsonPath.getString("phone_id ");
}

как мне передать phone_id в request body verify ? И правильно ли разбивать каждый post на отдельный @Test ? А если после verify будет еще один пост завязанный на verify и т.д. ? Подскажите как правильней решить вопрос ?

@Test
public void getVerification(){
        Map<String,String> data = new HashMap<>();
        data.put("phone_id  ", phone_id);
        data.put("body", "{\"\": " + phone_id+ ",\"user_ip\":null}");
        Response response = expect().statusCode(200)
                .given().spec(spec)
                .body(data)
                .when()
                .post("/verify");

(Taras) #2

если один тест прекондишин к другому то между тестами ви переменние не передадите … и я б такого не делал, лучше ето в одном тестовом методе тестировать все


(Oleksandr Romanov) #3

Вариант 1. Сделайте отдельный метод, который делает запрос телефона и возвращает Вам phoneId. И тогда отдельно будет тест на получение айди телефона, а второй на верификацию (который неявно как прекондишен вызывает getPhone. В случае если у Вас будет бага с получением телефона - у Вас автоматически будут фейлится тесты на верификацию.

Вариант 2. Если метод верификации - это совершенно отдельная независимая функциональность - то разделите проверку именно верификации (для заранее заготовленных вариантов телефон (через DataProvider) - а один или больше тестов сделайте в формате end-to-end - которые будут дергать реальный метод по возврату телефона.


#4

может быть вариант что нужно будет экстрактить еще одну переменную из первого теста и добавлять в 3-й или 4–й и т.д., так что вариант использовать певый метод как пре кондишн не подходит