- 아래 링크중 Auction_get 의 response 값을 받기
참고 링크 : https://rusharp.tistory.com/83- Environment 에 검색할 어빌리티 스톤의 값 입력하기
- response 값에서 필요한 값 정제하기
참고 링크 : https://rusharp.tistory.com/81/ 의 2-2번
- 어빌리티 스톤의 값 배열로 변환
// 어빌리티 스톤의 값 (각성,중갑 착용) let stone_options = pm.environment.get("stone_options").split(",");
- Auction_post 에 보낼 "각성", "중갑 착용" 에 해당되는 코드값 Environment Variable 로 입력
var response = pm.response.json(); // 어빌리티 스톤의 값 (각성,중갑 착용) let stone_options = pm.environment.get("stone_options").split(","); // `각성`과 `중갑 착용` 값을 가진 Value 변수에 삽입. // response 값 중에서 Etcoptions 를 가진 배열을 각 요소에 대해 콜백 함수 실행. // python 으로 따지면 for option in response.EtcOptions 와 비슷함. response.EtcOptions.forEach(option =>{ // 하위에 EtcSubs 가 있는지 확인 && Text 값이 "각인 효과" 인지 확인함. if (option.EtcSubs && option.Text == "각인 효과"){ // 각 option 값 중에서 하위의 각 요소에 대해 콜백 함수 실행. option.EtcSubs.forEach(sub =>{ // 각각의 값을 secondoption 에 각각 push 함. if(sub.Text == stone_options[0] || sub.Text == stone_options[1]){ secondoption.push(sub.Value); console.log("검색된 Value 값:", sub.Value); } }) } }) pm.environment.set("secondoption", secondoption);
- 어빌리티 스톤에 해당하는 code 값 Environment Variable 로 입력
var response = pm.response.json(); // 어빌리티 스톤에 포함되는 카테고리 번호 let categories_code response.Categories.forEach(option =>{ if (option.CodeName == "어빌리티 스톤"){ categories_code = option.Code console.log("어빌리티 스톤의 code 값 : ", option.Code) } }) pm.environment.set("categories_code", categories_code);
- 하단 console 값 확인
- 어빌리티 스톤의 값 배열로 변환
- Auction_post 의 requests 값으로 보내기
- requests 에 보내기 전에 배열의 값 직접 설정하기
- Postman 에서 환경변수나 전역 변수를 사용할 때 배열 요소에 접근하는 방식은 지원되지 않음.
- pre-request 에서 값을 추출하여 Body에 삽입하는 방식으로 진행.
let temp = JSON.parse("[" + pm.variables.get("secondoption") + "]"); pm.environment.set("SO_1", temp[0]); pm.environment.set("SO_2", temp[1])
- 참고로 `let stone_options = pm.environment.get("stone_options").split(",");` 와 다르게
`let temp = JSON.parse("[" + pm.variables.get("secondoption") + "]");` 로 값을 받아온 이유는,
위에는 문자열 형식이고, 아래는 숫자 형식이기 때문임. - 만약 JSON.parse 를 사용하고 싶다면 "각성", "중갑 착용" 으로 입력해야 함.
- 참고로 `let stone_options = pm.environment.get("stone_options").split(",");` 와 다르게
- Body 값 입력
{ "ItemLevelMin": 0, "ItemLevelMax": 1700, "ItemGradeQuality": null, "SkillOptions": [ { "FirstOption": null, "SecondOption": null, "MinValue": null, "MaxValue": null } ], "EtcOptions": [ { "FirstOption": 3, "SecondOption": {{SO_1}}, "MinValue": null, "MaxValue": null }, { "FirstOption": 3, "SecondOption": {{SO_2}}, "MinValue": null, "MaxValue": null } ], "Sort": "BIDSTART_PRICE", "CategoryCode": {{categories_code}}, "CharacterClass": "바드", "ItemTier": null, "ItemGrade": "유물", "ItemName": null, "PageNo": 0, "SortCondition": "ASC"
- 결과 값을 Test Results 로 출력
- Post-response 코드 내용
let stone_options = pm.environment.get("stone_options").split(","); pm.test("입력한 값과 동일한 어빌리티 스톤 검색", function () { var jsonData = pm.response.text(); pm.expect(jsonData).to.include(stone_options[0]); pm.expect(jsonData).to.include(stone_options[1]); });
- Test Results 값 확인
- Post-response 코드 내용
- requests 에 보내기 전에 배열의 값 직접 설정하기
'postman&API' 카테고리의 다른 글
로스트아크 API를 사용하여 매시간 보석 가격 확인하기 (1) | 2024.06.12 |
---|---|
postman runner 을 사용하여 여러 변수를 한번에 테스트하기 (0) | 2024.06.11 |
로스트아크 API 사용하기 (0) | 2024.06.08 |
Postman naver API 내용을 Python으로 코딩해보기. (0) | 2024.06.07 |
postman 다양한 기능 알아보기 (0) | 2024.06.06 |