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

RestAssured.Как получить значения из массива и передать их в тело другого запроса

rest-assured
Теги: #<Tag:0x00007f7b64499148>

(Vikss Vik) #1

Добрый день!
Подскажитe, как получить значения из массива и передать их в другой запрос .Дело в том, что есть что создания материала в статусе одобрен, нужно передавать в теле требования к материалу -id.Данные id не постоянные , а генерируются для каждого материала. Есть запрос get в котором для определенного материала получаю checklist -> items-id .Скриншот ответа https://pastebin.com/k2eHtpSD
Как из этого ответа выбрать checklist -> items-id (их 15 штук) ?
Второй вопрос как их этого ответа выбрать помимо checklist -> items-id , “material_type”,“material_id” и передать как тело в другой запрос


(Виталий) #2

checklist.items.id - будете получать 15 idшников. Чтобы получать конкретный -> checklist.items.id[2] - будете получать 3й по списку к примеру.
Чтобы использовать эти данные вам нужно завернуть все в Response response = given()…
в конце прописать extract(). response();
Потом прописать
int my_id = response.path(“checklist.items.id[2]”);
String my_material_type = response.path(“material_type”);
int my_material_id = response.path(“material_id”);

И эти переменные my_id / my_material_type / my_material_id использовать уже дальше в следующем запросе.
Если я где-то неправ, поправьте меня пожалуйста


(Vikss Vik) #3

Спасибо.я так и сделала

Мое решение
static List<String> getChekclistForAcceptedAtomicObject(int approvalAtomicId) {
factoryLogger.info(“Get chekclist for accepted AtomicObject”);
JsonPath response = given()
.headers(Auth.getMethodistCookie())
.contentType(JSON)
.header(ACCEPT, APP_VND_CMS_FOUR)
.param(MATERIAL_ID, approvalAtomicId)
.param(MATERIAL_TYPE, ATOMIC_OBJECT)
.when().get(BASE_URL + CMS_API_MODERATION_CHECKLIST)
.then().statusCode(SUCCESS_STATUS_CODE)
.extract().jsonPath();
List<String> list = new ArrayList<>();
String idMaterial = response.get((MATERIAL_ID)).toString();
String materialType = response.get(MATERIAL_TYPE);
for (int i = 0; i < 5; i++) {
String idItemChecklist = valueOf(i);
List<String> allIdItemChecklist = response.getList(“checklist.items.id[” + idItemChecklist + “]”, String.class);
list.addAll(allIdItemChecklist);
}
list.add(idMaterial);
list.add(materialType);
return list;
}

/* public static int getAcceptAtomicId() {
List<String> list = getChekclistForAcceptedAtomicObject(getIdNewTextAtomicForApproval());
String bodyChecklist = “{“checklist”:[”;
Object materialIdMaterialType = “{” + ““id”:” + list.get(14) + “, “value”:true }],” + ““comment”:”"" + “,\n” + ““material_id”:” + list.get(15) + “,\n” + ““material_type”:” + “”" + list.get(16) + “”" + “}”;
for (int i = 0; i < 14; i++) {
bodyChecklist = (bodyChecklist + “{” + ““id”:” + list.get(i) + “, “value”:true },”);
}
String bodyForAcceptAtomic = bodyChecklist + materialIdMaterialType;
int acceptedId;
acceptedId = given()
.headers(Auth.getMethodistCookie())
.contentType(JSON)
.header(ACCEPT, APP_VND_CMS_FOUR)
.body(bodyForAcceptAtomic)
.when().put(BASE_URL + CMS_API_MODERATION_CHECKLIST)
.then().statusCode(SUCCESS_STATUS_CODE)
.extract().response().jsonPath().get(MATERIAL_ID);
return acceptedId;
}