<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] <br> ### 本節目標 在日常測試中,我們經常會遇到一些接口中,需要傳入一個經過`某種加密方式`的字段作為簽名,來保證這個請求是合法的。 在本節知識點,一方面來鞏固前面章節學習的知識;一方面掌握使用Postman內置的加密模塊進行md5加密。真真正正的在實際工作中運用起來。 ### 需求說明 假設需要測試某接口,需要傳入ip參數和簽名sign參數,服務端根據ip返回對應的國家和城市信息。 **接口文檔** 請求方法:GET 接口地址:http://xx.xx.xx.xx:8000/mock/location/ | 參數| 必須| 描述| |-----|-----|------| | ip | 是 | ip地址| | sign| 是 | 簽名,簽名規則:md5(key+ip),其中key=“Milton_PTQA”| 請求示例:http://xx.xx.xx.xx:8000/mock/location/?ip=171.96.0.127&sign=e23c21efbd7c388f62155b4aa09e1a75 **響應結果** 簽名通過時,返回如下: ```python { "code": 1, "msg": "success", "data": { "country": "Thailand", "countryCode": "TH", "city": "Bankok", "ipaddress": "171.96.0.127" } } ``` 簽名不通過時,返回如下: ```python { "code": 0, "msg": "sign error", "data": [] } ``` 要知道,我們對這個接口測試,不可能只用一個ip來測試,假如我們對ip參數化,當ip改變時,sign值必須要重新簽名,否則會校驗不通過。 本實例實現: - 在Pre-request Script 中通過js腳本自動重新簽名 在實際自動化測試中,ip會進行參數化,這里就不參數化了,主要邏輯并不影響。 - 在Tests Script 中設置斷言 ### 創建 Request Builder 在URL參數sign的值中,引用變量`{{sign}}`,這個變量會在下面的Pre-request 中賦值。 ![](https://box.kancloud.cn/4edfad69c0f8a46e2f171b2ac4235408_1081x200.jpg) 設置全局變量 key,這個key是約定好的簽名秘鑰,在簽名時使用。 ![](https://box.kancloud.cn/fe868e496d6b39697e9d7c40b4f7efa7_711x259.jpg) ### 參數初始化 Pre-request Script 請求發送前,需獲取請求中的ip,獲取全局變量中的key,然后通過md5(key+ip)計算出簽名,并將結果設置到全局變量中。這樣,在發送請求時,即可替換掉對應的sign變量引用。 在Pre-request Script 標簽Tab下,編寫腳本如下: ```javascript // 獲取GET參數對象object queryObj=pm.request.url.query; // 獲取URL中的參數 var ip = queryObj.get("ip"); // 獲取全局變量 var key = pm.globals.get("key"); // 根據加密規則,拼裝加密前字符串 var str=key+ip; // 調用CryptoJS模塊的MD5方法,對字符串進行md5加密 var sign = CryptoJS.MD5(str).toString(); // 將簽名值添加到全局變量中,便于在參數中引用 pm.globals.set("sign",sign); ``` 這里有個新的知識點,引用了`CryptoJS`模塊提供的MD5方法,進行md5加密。 在Postman 腳本中,有一些常用的庫,可以幫助我們便捷實現某種功能。 例如這里的“CryptoJS”庫,它提供了標準和安全的加密算法,支持的算法有:AES, DES, EvpKDF, HMAC-MD5, HMAC-SHA1/3/256/512, MD5, PBKDF2, Rabbit, SHA1/3/224/256/512, TripleDES 更多常用庫知識,可以通過官方文檔了解更多,這里就不詳細介紹了。 [https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox](https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox) ### 斷言 Tests Script 在Tests標簽Tab下,編寫腳本如下: ```javascript // 將響應內容JSON字符串轉換成JSON對象 var respObj=JSON.parse(responseBody); // 從JSON對象中獲取國家編號 var countryCode = respObj["data"]["countryCode"]; // 從JSON對象中獲取城市名稱 var city = respObj["data"]["city"]; // 開始斷言.... //tests["響應碼為200"]=responseCode.code===200; pm.test("響應碼為200",function(){ pm.expect(responseCode.code).to.eql(200); }); tests["根據IP成功查詢到國家:"+countryCode]=countryCode.length>0; tests["根據IP成功查詢到城市:"+city]=city.length>0; ``` 這里沒有新的知識點,只需回顧一下前面章節即可掌握。 ### 實驗結果 ![](https://box.kancloud.cn/b9eb098e07a67618effa493cbd94af4e_1057x493.jpg) 根據本實例設置好后,我們可以任意修改ip的值,至于sign的值,我們就不需要去理會了,它總會生成正確的簽名值。 <hr style="margin-top:100px"> :-: ![](https://box.kancloud.cn/331f659e8e6cddb0d9f182e00e32803f_258x258.jpg) ***微信掃一掃,關注“python測試開發圈”,獲取更多測試開發分享!***
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看