programing

javascript 및 Postman을 사용한 JSON 배열 레코드 카운트

fastcode 2023. 3. 31. 22:54
반응형

javascript 및 Postman을 사용한 JSON 배열 레코드 카운트

2개의 레코드를 반환하는 컨트롤이 있습니다.

{
  "value": [
    {
      "ID": 5,
      "Pupil": 1900031265,
      "Offer": false,
    },
    {
      "ID": 8,
      "Pupil": 1900035302,
      "Offer": false,
      "OfferDetail": ""
    }
  ]
}

우체국을 통해 2개의 레코드가 반환되었는지 테스트해야 합니다.여러 가지 방법을 찾아봤지만 소용이 없었어요.다음 코드를 사용해도 예상된 답변이 반환되지 않습니다.

responseJson = JSON.parse(responseBody);
var list = responseBody.length;
tests["Expected number"] = list === undefined || list.length === 2;

현시점에서는 테스트하고 있는 API가 문제인지 코딩 문제인지 잘 모르겠습니다.반송된 아이템을 루프해 보았습니다만, 이것도 제 기능을 하지 않습니다.누가 조언 좀 해주시겠어요?저는 javascript를 처음 사용하는 사람이라 제 문제에 분명한 원인이 있을 것으로 예상하지만, 잘 모르겠습니다.대단히 고맙습니다.

집배원, 아래Tests섹션, 다음 작업을 수행합니다(아래 참조). var body = JSON.parse(responseBody); tests["Count: " + body.value.length] = true;

표시되는 것은 다음과 같습니다(주의:교체했습니다.responseBodyJSON을 사용해 상기의 예를 목업 합니다.여기에 이미지 설명 입력

json을 수정합니다.이거 먹어봐.

=======================v

var test = JSON.parse('{"value": [{"ID": 5,"Pupil": 1900031265,"Offer": false},{"ID": 8,"Pupil": 1900035302,"Offer": false,"OfferDetail": ""}] }')
    
test.value.length; // 2

따라서 json에서 어레이를 식별해야 합니다(먼저[괄호. 그리고 키를 가지고 체크합니다.lengthkey.

제가 알아낸 가장 간단한 방법은 다음과 같습니다.

pm.expect(Object.keys(pm.response.json()).length).to.eql(18);

변수에 맞게 커스터마이즈할 필요가 없습니다."18"을 복사하고 붙여넣고 원하는 숫자에 맞게 조정하기만 하면 됩니다.

이게 내가 한 짓이다.

//parsing the Response body to a variable
    responseJson = JSON.parse(responseBody);

//Finding the length of the Response Array
    var list = responseJson.length;
    console.log(list);
    tests["Validate service retuns 70 records"] = list === 70;

여기에 이미지 설명 입력

어레이에서 두 개체만 아사트하는 더 업데이트된 버전:

pm.test("Only 2 objects in array", function (){
    pm.expect(pm.response.json().length).to.eql(2);
});

응답 본문이 개체 시도 길이를 찾을 수 없습니다.

var list = responseJson.value.length;

우선 응답을 json으로 변환하고 값 경로를 찾아야 합니다.값은 어레이입니다.길이 함수를 호출하여 개체 수를 가져오고 예상 크기를 확인해야 합니다.

pm.test("Validate value count", function () {
    pm.expect(pm.response.json().value.length).to.eq(2);
});

같은 문제가 있었습니다만, 특정 수의 어레이 멤버를 테스트하기 위해서 사용한 것은 다음과 같습니다.

responseJson = JSON.parse(responseBody);
tests["Response Body = []"] = responseJson.length === valueYouAreCheckingFor;

어떤 값을 얻을 수 있는지 확인하려면 값을 인쇄하고 우체국 콘솔을 확인합니다.

console.log(responseJson.length);

javascript와 불면증을 이용한 JSON 배열의 레코드 카운트

//response insomnia
const response = await insomnia.send();

//Parse Json
const body = JSON.parse(response.data);

//Print console:
console.log(body.data.records.length);

 pm.test("Only 2 objects in array", function (){
     var jsonData = pm.response.json();
     let event_length = jsonData.data.length;
    pm.expect(event_length).to.eql(2);
 });

댓글에 기재되어 있는 바와 같이 테스트해야 합니다.responseJson.value.length

responseJson = JSON.parse(responseBody); tests["Expected number"] = typeof responseJson === 'undefined' || responseJson.value.length;

JSON 내의 어레이 길이를 검증할 때 같은 문제가 발생했습니다.다음 스니펫을 참조해 주십시오.

responseJson = JSON.parse(responseBody);
var list = responseBody.length;
tests["Expected number"] = responseJson.value.length === list;

작업 코드

 pm.test("Verify the number of records",function()
 {
   var response = JSON.parse(responseBody); 
   pm.expect(Object.keys(response.value).length).to.eql(5);

 });
//Please change the value in to.eql function as per your requirement    
//'value' is the JSON notation name for this example and can change as per your JSON

언급URL : https://stackoverflow.com/questions/35987043/counting-records-in-json-array-using-javascript-and-postman

반응형