日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Postman高级应用——流程控制、调试、公共函数、外部数据文件

發布時間:2023/12/4 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Postman高级应用——流程控制、调试、公共函数、外部数据文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

postman客戶端下載地址:https://www.getpostman.com/apps

流程控制

流程控制簡言之就是設置接口的執行順序,流程控制只有在collection runner或Newman里才生效

如果需要實現多個接口的一次循環,只需在每個接口的Tests中編寫腳本

postman.setNextRequest('下一個接口名');

操作如下圖所示:

使用if進行判斷來結束執行:

if(globals["我的地盤::創建新列表 - 禪道"])postman.setNextRequest("null"); tests["執行完畢!"] = responseCode.code ===200;

我的地盤::創建新列表 - 禪道為接口B中的返回值,在接口B中將其定義成一個全局變量。接口A通過判斷全局變量是否存在進而判斷接口B是否執行。如全局變量存在,將終止執行,否則執行接口B。

postman.setNextRequest("null");是一個終止程序作用

?

【注意】

1.如果不設終止條件,接口A執行完到接口B,接口B執行完又指向接口A,會構成死循環。該示例中if(globals["我的地盤::創建新列表 - 禪道"])為終止條件。

2.執行前需將用來做判斷的全局變量刪除,否則第一次執行完接口A后就將終止執行。

3.為了更清楚直觀的查看運行結果,最好在每一個接口的Tests中增加一個斷言,否則難以判斷接口A執行的次數

調試

調試有三種方式:

1.使用Ctrl+Alt+c 可以打開Postman的控制臺,可以查看請求和響應(只適用于客戶端,不適用于Chrom 插件)

2.用console.log()打印,到控制臺看

3.tests['這里拼出你想看的字符串'] = true在界面/報告看斷言

?

使用Postman控制臺查看,如下圖所示:

使用console.log()打印輸出內容操作如下圖所示:

?

?使用tests['這里拼出你想看的字符串'] = true,tests并不單單是指設置斷言,也可以是普通的輸出某些信息,如下圖所示:

公共函數

常用的公共函數分為六種,分別是:

1).判斷是否超時(assertNotTimeout):

var hasResponse=postman.getResponseHeader('Content-Type')?true:false; if(!hasResponse) tests['服務端在超時前沒返回任何數據,請檢查相關服務、網絡或反向代理設置(以下跳過其他斷言)']=false;

2).未超時,顯示發出的請求參數(logParams):

if(hasResponse) tests[`[INFO] 請求參數(超時沒返回時不解析):${JSON.stringify(request.data)}`]=true;

3).未超時,解析返回的JSON對象(getResponseJson):

try{if(hasResponse) var json=JSON.parse(responseBody);}catch(err){ tests['服務端沒返回合法的JSON格式,請檢查相關服務、網絡或反向代理設置(以下跳過其他斷言)']=false; tests[`[INFO] 返回:${responseBody}`]=true; console.error(err);}

4).返回元素的類型(assertType):

var assertType=(name,value,type)=>{let isType=(type==='array')? Array.isArray(value):typeof value===type; tests[`${name}為${type}(實際值:${value})`]=isType;};

5).返回元素是否與預期值一致(assertEqual):

var assertEqual=(name,actual,expected)=>{tests[`${name}等于${expected}(實際值:${actual})`]=actual===expected;};

6).返回元素是否與預期值不一致(assertNotEqual):

var assertNotEqual=(name,actual,expected)=>{tests[`${name}不等于${expected}(實際值:${actual})`]=actual!==expected;};

?

為了使用方便,所以將以上函數設置為全局變量,每行一對 key:value 的形式編輯設置成全局變量,如下圖所示:

設置好之后,來使用以上函數,使用時的代碼為:

eval(globals.assertNotTimeout);//判斷是否超時eval(globals.logParams);//未超時,顯示發出的請求參數eval(globals.getResponseJson);//未超時,解析返回的JSON對象eval(globals.assertType);//返回元素的類型eval(globals.assertEqual);//返回元素是否與預期值一致eval(globals.assertNotEqual);//返回元素是否與預期值不一致

各函數的具體用法,如下詳解:

①第一個函數和第二個函數一起使用,先判斷是否超時,若未超時,便顯示發出的請求參數,操作如下圖所示:

tests中的代碼為:

eval(globals.assertNotTimeout); eval(globals.logParams);

②第一個函數和第三個函數一起使用,先判斷是否超時,若未超時,便解析返回的JSON對象,操作如下圖所示:

tests中填入如下代碼:

eval(globals.assertNotTimeout); eval(globals.getResponseJson);tests[json.expires_in] = 7200;

注意:由于getResponseJson是解析返回的JSON對象,所以接口請求返回的定是JSON才能使用

?③返回元素的類型(assertType),操作如下圖所示:

tests中代碼為:

eval(globals.assertType);//assertType=(name,value,type);//name為返回的元素key,value為該元素的值,type為該元素的類型assertType('姓名','boss','string'); assertType('昵稱','一壺清酒','string'); assertType('數字',1,'number');

注意:此處需注意的是,數字類型并不是常說的int型,而是number,填入int會一直報錯

返回元素類型的值中代碼:var assertType=(name,value,type)=>{let isType=(type==='array')? Array.isArray(value):typeof value===type; tests[`${name}為${type}(實際值:${value})`]=isType;};

從返回元素類型的值中代碼來看,該代碼是一個三目運算符,重要點在于typeof中的value值,比如輸入該代碼:assertType('數字',1,'number');value為1,type為number,便會執行通過pass,若把type改為int,執行結果只會顯示fail

進行如下操作就能輕而易舉明了,如下所示:

tests中的代碼為:

//解釋typeoftests[typeof 'hello'] =true;//返回出來的是string,值的類型tests[typeof 1] =true; //返回出來的是number

④返回元素是否與預期值一致(assertEqual),相等為true(pass),反之為false(fail),操作如下圖所示:

tests中代碼為:

eval(globals.assertNotTimeout);eval(globals.getResponseJson); eval(globals.assertEqual);//assertEqual=(name,actual,expected);//name為返回的元素key,actual為返回的實際值,expected為預期值assertEqual('expires_in',json.expires_in,7200); assertEqual('expires_in',json.expires_in,7100);

做簡單的預期結果與實際結果判斷也可如下操作:

eval(globals.assertEqual);//assertEqual=(name,actual,expected);//name為返回的元素key,actual為返回的實際值,expected為預期值//號碼相同pass,不相同failassertEqual('電話號碼',18867210313,18867210313); assertEqual('電話號碼',18867210310,18867210313);

⑤返回元素是否與預期值不一致(assertNotEqual),不相等為true(pass),反之為false(fail),操作如下圖所示:

tests中代碼如下

eval(globals.assertNotTimeout); eval(globals.getResponseJson); eval(globals.assertNotEqual);//assertNotEqual=(name,actual,expected);//name為返回的元素key,actual為返回的實際值,expected為預期值//號碼不相等pass,相等failassertNotEqual('expires_in',json.expires_in,7100); assertNotEqual('expires_in',json.expires_in,7200);


外部數據文件

外部數據文件是Collection Runner在HTTP requests 和script中可以導入CSV文件或是JSON文件,從數據文件(即CSV或JSON文件)中使用values,為了在Postman UI中去使用它們,你需要遵循和environment or global variables一樣的語法。

?

操作步驟:

1.在你的Collection request中使用變量,以下的所有變量將會被數據文件中的相應的值替換

2.準備你所需要運行的數據文件(JSON/CSV)

CSV文件要在Collection Runner中工作,第一行必須是在request中要使用的變量名,每一行是一條用例,并表示一次迭代。

JSON文件,你需要確保你的文件有鍵/值對數組。數組中的每個元素是鍵值對的對象,代表了一次迭代。key是作為變量名,values是代替request里的值。

3.打開Collection Runner窗口以及選擇合適的Collection或文件夾

4.選擇“Choose files”,從文件選擇區加載數據文件,如果加載成功,你可以預覽Collection Runner中執行的數據量

5.設置迭代次數。每次迭代都將使用你的數據文件中的一行,如果迭代次數超過數據文件中的行數,將重復執行最后一行

6.運行Collection以及觀察結果

?

舉例為百度接口,設置好參數,如下圖所示:

?

在左側面板中選中該接口并運行,如下圖所示:

配置參數,如下圖所示:

csv格式文件先制作好,再在運行時添加進來,預覽效果如為:

?

最終運行效果如下圖所示:

原文地址:http://www.cnblogs.com/hong-fithing/p/7601859.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的Postman高级应用——流程控制、调试、公共函数、外部数据文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。