如何使用postman判斷返回結果是否正確


針對一個接口,我們在知道參數以及參數對應的結果時,可以通過postman進行判斷,驗證返回數據是否與預期數據相等。這樣可以使我們的接口測試更加的方便簡潔。

1、准備數據。

 postman可以接受的文件格式如圖所示,一般來說可以將我們需要進行參數化的數據存儲在excel表格中,如下圖所示,postman在讀取數據的時候,根據第一行的列名讀取,並且在excel,針對多個參數可以使用逗號隔開,沒有txt那么麻煩。

圖中,city和income是接口需要的參數,Insurance_ability和score是預期的返回的值,當然也可以跟接口返回的參數名不對應。

 

postman中讀取數據的時候,會將表名默認的認為是data。所以在讀取數據的時候,比如讀取city這一列的數據,則書寫為data.city。postman會按照data.city的讀取方式讀取數據直到數據為空。

需要注意的是:使用excel保存的數據,在保存的時候請另存為csv格式,並且使用Notepad++將其轉換為utf-8的格式,不然在postman中識別是亂碼格式,對數據的判斷造成失誤。

2、postman參數設置

此接口中,我們需要參數化的參數是city和income,針對這兩個參數,使用{{}}包括。

3、請求發送前,參數設置
我們是需要對表格中的數據進行參數化,所在在發送請求之前,我們要讓postman能夠讀取到文件中的數據,在postman中,Pre-request Script中的語句postman會在請求發送之前執行,所以讀取語句的操作,我們放在這里執行。

 代碼語句進行讀取操作。

var city = data.city;
var income =data.income;

4、在Tests中進行判斷操作
第四步應該是最重要的操作,現在我們已經在發送請求之前讀取了文件的數據,那么該如何進行判斷呢?這步我們在Tests中進行,Tests會在請求之后執行,Tests也稱之為斷言。

如何去判斷返回的數據是否正確的思維是:

1、將文件中的預期結果設置為環境變量

2、獲取返回的數據

3、進行判斷

var score=(data.score);//獲取文件中數據
var Insurance_ability=(data.Insurance_ability);//設置成環境變量
pm.environment.set("score",score);
pm.environment.set("Insurance_ability",Insurance_ability);
 
 
if(tests["code is 200"]=responseCode.code===200){ //[postman斷言輸出,返回200打印code is 200
    var d = JSON.parse(responseBody); //將返回數據解析成json格式
if( d.得分==score&&d.保險能力==Insurance_ability){ //將返回數據與環境變量進行對比,如果同時滿足
    var a=1; //因為pm.test語句中含有function()設置滿足條件是a=1,
    pm.test("測試通過",function(){ //if中判斷為真,則斷言輸入測試通過
        if(a==1);
    });
}
else{
    var a=0;
    pm.test("測試不通過",function(){
    if(a===0);
    });
}
 
}else if(tests["code is 500"]=responseCode.code===500){//狀態為500時斷言輸出
    
}else{
    tests["code is 400"]=responseCode.code===400 //狀態為400時斷言輸出
}

5、參數化執行

以上工作准備完成之后,我們就可以開始正式的參數化執行了

1、點擊Runner

  2、接口選擇,環境准備,選擇文件

 3、點擊Run,開始執行

4、檢查執行結果

 在數據跑完之后,我們可以直接在頁面看到結果,其中pass和failed是代碼tests中斷言通過的數量,其中,我們可以看到測試通過,和code is 200的提示,

我們看到failed數量為1,我們找到該請求

 看到coed is 200 狀態為FALL,coed is 500狀態為pass, 可以判斷該請求狀態碼是500

此時就可以查看該請求的請求地址和返回參數,再對比數據,查看具體是哪里的錯誤。

tests["測試通過"]=true;   //設置為true,運行時表示pass
tests["測試不通過"]=false;  //設置為false,運行時表示fail

實現整個判斷的語句如下:

var city = data.city;
var income =data.income;
var score=(data.score);
var Insurance_ability=(data.Insurance_ability);
pm.environment.set("score",score);
pm.environment.set("Insurance_ability",Insurance_ability);
 
var d = JSON.parse(responseBody);
 if(d.得分==score&&d.保險能力==Insurance_ability){
        tests["測試通過"]=true;
    }else{
        tests["測試不通過"+"(輸入參數"+city+'、'+income+")預期結果(得分="+score+"、保險能力"+Insurance_ability+")(實際結果得分="+d.得分+"、保險能力="+d.保險能力+')']=false;
        }

如圖,數據表中,存在19個用例,通過17個,失敗兩個,並且針對失敗的用例,清晰的可以看到參數、預期結果以及返回結果。

 如果數據較多的時候,我們可以直接通過運行結果頁面的紅色方塊(失敗區域)展示的用例查找失敗的數據。

 代碼更新:

針對接口出現的問題,簡要的分為三種情況,服務器問題、客戶端問題、數據校驗,所以更新了一下驗證代碼

var state=responseCode.code;//獲取返回狀態
var number=(state.toString()).substr(0,1);//將返回的number類型轉為string類型,並獲取第一位
switch(number){
case '2':
    test();
    break;
case '4':
    clientQue(); //4開頭的狀態,簡單定義為客戶端問題
    break;
case '5':
    serverQue(); //5開頭的狀態,簡單定義為服務器問題
    break;
default:
    tests['測試不通過,狀態='+state]=false;  //如出現其他情況,則打印狀態,並測試不通過
    break;
}
 
function test(){ //狀態為200執行的函數
var city = data.city;
var income =data.income;
var score=(data.score);  //可使用request。url獲取url,解析參數字段
var Insurance_ability=(data.Insurance_ability);
 
var result = JSON.parse(responseBody);
 if(result.得分==score&&result.保險能力==Insurance_ability){
        tests["測試通過"]=true;
    }else{
        tests["測試失敗"+"(輸入參數"+city+'、'+income+")預期結果(得分="+score+"、保險能力"+Insurance_ability+")(實際結果得分="+result.得分+"、保險能力="+result.保險能力+')']=false;
       
        }
}
 
//客戶端問題
function clientQue(){
    tests['客戶端問題(請求參數或方式錯誤)---測試失敗---狀態碼為'+state+'   requestURl為'+request.url]=false;
}
 
//服務器或者網關問題
function serverQue(){
    tests['服務器或網關問題---測試失敗---狀態碼為'+state+'   requestURl為'+request.url]=false;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM