最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Postman自動化接口測試實戰(zhàn)

 更新時間:2021年11月28日 10:04:31   作者:軟件測試君  
有時我們可能需要在多個環(huán)境下對同一個接口進行測試。比如我們請求的域名,開發(fā)、測試、生產(chǎn)環(huán)境,請求參數(shù)。文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

背景描述

有一個項目要使用postman進行接口測試,接口所需參數(shù)有:

  • appid: 應(yīng)用標識;
  • sign:請求簽名,需要使用HMACSHA1加密算法計算,簽名串是:{appid}${url}${stamp};
  • stamp:這個是時間戳;
  • option:業(yè)務(wù)參數(shù);

問題是怎么在Postman發(fā)起請求時根據(jù)參數(shù)動態(tài)構(gòu)建簽名(sign)?

postman的腳本庫中CryptoJS是支持各種算法的加密,包括HMACSHA1,簽名算法有了。

難點是獲取url中的path參數(shù),當發(fā)起一個請求時開始可以固定一個path值的,自動化測試需要執(zhí)行時獲取path值,怎么獲取呢?

創(chuàng)建一個GET請求

postman基礎(chǔ)用法就不介紹了,先創(chuàng)建一個GET請求,URL中有配置各種動態(tài)參數(shù)

{{變量名}} :postman引用環(huán)境變量的語法;

{{$guid}}:postman預定義的環(huán)境變量用于獲取一個GUID值;

圖片

在pre-request scripts構(gòu)建簽名

pre-request scripts 是個javascript執(zhí)行環(huán)境,在請求發(fā)送之前執(zhí)行;把他當做js用就行,不過有的js庫是不支持的。

接下來就是動態(tài)獲取簽名了

1、appid環(huán)境變量中配置的固定值;

2、stamp時間戳獲?。?/p>

//獲取unix時間getUnixTime:function(){ return Math.round(new Date().getTime()/1000);
}

3、url值可以通過request.url獲取然后解析出其中的path:

//獲取url的path部分getUrlRelativePath:function(url){ var arrUrl = url.split("http://");
    var start = arrUrl[1].indexOf("/");
    var end=arrUrl[1].indexOf("?");
    var relUrl = arrUrl[1].substring(start,end);//stop省略,截取從start開始到結(jié)尾的所有字符 console.log(relUrl); return relUrl;
}

4、構(gòu)造簽名串,使用秘鑰加密即可。

postman提供的加密算法庫并不一定所有都支持,有時候需要向后臺去換取簽名;

var host=pm.environment.get("host");var text=encodeURIComponent(plain);
pm.sendRequest(host+"/FaceIn/ToHmacsha1?plain="+text+"&secret="+sercret, function (err, response) { var json=response.json(); //簽名含有+等特殊字符需要url編碼
      pm.environment.set("sign",encodeURIComponent(json.result));
});

簽名串最好進行URL編碼。

遺留問題:向后臺換取簽名的時候起初是返回字符串responsejson()解析不了的!

5、使用eval將定義的變量postmanUtil注入全局變量中然后調(diào)用

eval(environment.postmanUtil);postmanUtil.setLsdzSign();

結(jié)果如圖:

圖片

代碼如下:

var postmanUtil={ //獲取unix時間
    getUnixTime:function(){ return Math.round(new Date().getTime()/1000);
  }, //獲取url的path部分
  getUrlRelativePath:function(url){ var arrUrl = url.split("http://");
    var start = arrUrl[1].indexOf("/");
    var end=arrUrl[1].indexOf("?");
    var relUrl = arrUrl[1].substring(start,end);//stop省略,截取從start開始到結(jié)尾的所有字符 console.log(relUrl); return relUrl;
  }, //簽名
  setLsdzSign:function(){ var appid=pm.environment.get("appid"); var sercret=pm.environment.get("appsercret"); //時間戳
       var time=postmanUtil.getUnixTime();
       pm.environment.set("stamp", time); //地址 獲取當前地址的path部分
       var path= postmanUtil.getUrlRelativePath(request.url); console.log(path); var url=path; var plain=appid+"$"+url.toLowerCase()+"$"+time; var hmac = CryptoJS.HmacSHA1(plain, sercret).toString(CryptoJS.enc.Base64); //獲取簽名,CryptoJS.HmacSHA1 無法滿足簽名算法只能從后臺
     var host=pm.environment.get("host"); var text=encodeURIComponent(plain);
        pm.sendRequest(host+"/FaceIn/ToHmacsha1?plain="+text+"&secret="+sercret, function (err, response) { var json=response.json(); //簽名含有+等特殊字符需要url編碼
              pm.environment.set("sign",encodeURIComponent(json.result));
        });
  }
}eval(environment.postmanUtil);
postmanUtil.setLsdzSign();

腳本寫在環(huán)境變量中

在Pre-request Script寫上面代碼,要是單個接口還是可以的,即使很多接口只要Copy一份即可。

萬一腳本需要改麻煩就來了,你需要去每個請求的 Pre-request Script窗口改,怎么解決呢?

可以解決,將postmanUtil定在ENVIRONMENT中就可以了,做法如下:

圖片

其實就是將postmanUtil放入環(huán)境變量了,其它沒有變,只要維護環(huán)境變量里的值就OK了,不用一個個去改。

再看pre-request script代碼,這樣就簡單多了:

圖片

postman console的用法

不知道是否成功獲取了環(huán)境變量,又或者想查看某個變量的值,postman也提供了很方便的控制臺查看,菜單View下Show Postman Console可以打開如下控制臺:

圖片

圖中是console.log(sercret) 和 sendRequest()的結(jié)果

Collection Runner 自動化API測試

創(chuàng)建接口的測試用例

對于返回html的結(jié)果,只要測試body中包含某個值就算通過

圖片

對于返回Json結(jié)果,只要Code為0即為通過

圖片

窗口右側(cè)有常用的腳本快捷操作,選中就可以生成,很方便

選擇并運行自動化接口測試

點擊主頁左上角Runner進入,選擇之前構(gòu)建好的接口,并選擇好環(huán)境,點擊Run xxx 接口運行腳本測試

圖片

測試結(jié)果

可以看到結(jié)果2接口都成功返回預定的結(jié)果

在這里插入圖片描述

到此這篇關(guān)于Postman自動化接口測試實戰(zhàn)的文章就介紹到這了,更多相關(guān)Postman自動化接口測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序掃描二維碼獲取信息實例詳解

    微信小程序掃描二維碼獲取信息實例詳解

    這篇文章主要介紹了微信小程序掃描二維碼獲取信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • JavaScript統(tǒng)計字符串中每個字符出現(xiàn)次數(shù)完整實例

    JavaScript統(tǒng)計字符串中每個字符出現(xiàn)次數(shù)完整實例

    這篇文章主要介紹了JavaScript統(tǒng)計字符串中每個字符出現(xiàn)次數(shù)的方法,以完整實例形式分析了JavaScript針對字符串中字符的遍歷操作相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • js判斷瀏覽器的環(huán)境(pc端,移動端,還是微信瀏覽器)

    js判斷瀏覽器的環(huán)境(pc端,移動端,還是微信瀏覽器)

    這篇文章主要介紹了js判斷瀏覽器的環(huán)境(pc端,移動端,還是微信瀏覽器),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • LayUI數(shù)據(jù)接口返回實體封裝的例子

    LayUI數(shù)據(jù)接口返回實體封裝的例子

    今天小編就為大家分享一篇LayUI數(shù)據(jù)接口返回實體封裝的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 微信小程序?qū)崿F(xiàn)點擊按鈕修改view標簽背景顏色功能示例【附demo源碼下載】

    微信小程序?qū)崿F(xiàn)點擊按鈕修改view標簽背景顏色功能示例【附demo源碼下載】

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)點擊按鈕修改view標簽背景顏色功能,涉及微信小程序事件響應(yīng)及數(shù)值運算實現(xiàn)動態(tài)設(shè)置view背景色樣式的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • 小程序animate動畫實現(xiàn)直播間點贊

    小程序animate動畫實現(xiàn)直播間點贊

    這篇文章主要為大家詳細介紹了小程序animate動畫實現(xiàn)直播間點贊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • uni-app中使用renderjs的詳細步驟講解

    uni-app中使用renderjs的詳細步驟講解

    這篇文章主要介紹了uni-app中使用renderjs的詳細步驟,RenderJS是一種可以直接運行在視圖層(webview)中的JavaScript技術(shù),用于優(yōu)化大量DOM操作的性能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • 2012世界末日倒計時代碼 原來沒事虛驚一場

    2012世界末日倒計時代碼 原來沒事虛驚一場

    這款時世界末日倒計時源代碼,程序上有JS控制器,是用于網(wǎng)頁中顯示的倒計時器,自己可以設(shè)定世界末日的開始時間,網(wǎng)頁倒計時世界末日源代碼直接復制就可以用
    2012-12-12
  • JavaScript中的動態(tài)?import()用法示例解析

    JavaScript中的動態(tài)?import()用法示例解析

    這篇文章主要為大家介紹了JavaScript中的動態(tài)import()用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 用JavaScript操作WinRar

    用JavaScript操作WinRar

    Blog的插入HTML功能有誤。 原來在blueidea.com上看到了用ASP執(zhí)行解壓縮動作的文章,一直沒有去用心看,前日,趁老大不在,爽了一把,把它改成了用JavaScript操作的了。
    2008-04-04

最新評論

东城区| 吴桥县| 顺义区| 宜章县| 辉县市| 武夷山市| 湘潭市| 建阳市| 武汉市| 伊宁市| 阿拉善盟| 剑川县| 韶关市| 乐陵市| 忻城县| 陆河县| 呼图壁县| 乌拉特前旗| 白水县| 民丰县| 珠海市| 江都市| 武城县| 科尔| 屏边| 礼泉县| 武平县| 措美县| 探索| 巴林右旗| 竹北市| 修文县| 新沂市| 西峡县| 肥东县| 黎平县| 金平| 油尖旺区| 英德市| 安化县| 即墨市|