<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] <br> ### Scripts 腳本介紹 在Postman中,有個叫“Sandbox”的運行環境,是一個JavaScript執行環境,所以我們可以編寫javaScript腳本來擴展我們的業務需求行為。最常用的實現包括但不限于: - 構造動態參數 - 請求間數據傳遞 - 斷言 在Postman接口測試過程中,有兩個位置我們可以添加自己的腳本,分別是 - pre-request script 作用于請求之前,一般用于數據初始化 - test script 作用于獲得響應之后,主要用于斷言(解析響應內容,與預期值進行對比) ![](https://box.kancloud.cn/4e5819b18948cb73d6f533abcb57da9a_826x179.jpg) *注意:Collection、Folder、Request 這三個組件中都可以添加pre-request script 和 test script,只是他們的作用范圍和順序稍有不同而已* ![](https://box.kancloud.cn/acf6791030b458fd2cfb1ddeee3df8a3_1315x458.jpg) ### 通過控制臺調試腳本 這里用一個簡單的日志打印腳本語句`console.log()`,分別在Pre-request Script 和 Tests 兩個Tab下打印一句話,然后在控制臺中查看打印結果 ![](https://box.kancloud.cn/7312ac14cafb34ea3ec396aa5b96bf89_818x146.jpg) ![](https://box.kancloud.cn/559dfe8c3f88fdf44c7126a0e5b33aab_817x151.jpg) 打開控制臺 ![](https://box.kancloud.cn/268a208f9b4984966fe777c9a7d66fab_1110x438.jpg) 點擊"Send"發送請求后,即可在控制臺中顯示打印結果 ![](https://box.kancloud.cn/5c3e32b4ce60d07168cd937c4eda7033_989x240.jpg) ### Script 代碼片段介紹 #### 變量操作 ##### 環境變量 ```javascript // 設置環境變量 pm.environment.set("timestampsParam",new Date()); // 獲取環境變量 pm.environment.get("timestampsParam"); // 刪除環境變量 pm.environment.unset("timestampsParam"); ``` ##### 全局變量 ```javascript // 設置全局變量 pm.globals.set("variable_key", "variable_value"); // 獲取全局變量 pm.globals.get("variable_key"); // 刪除全局變量 pm.globals.unset("variable_key"); ``` ##### 變量 ```javascript // 在全局變量和活動環境中搜索變量。 pm.variables.get("variable_key"); ``` ##### Data 變量 Data變量,只有在Collection運行中使用,所有的Data變量會存儲在`data`對象內,假如存在變量value,則data.value可獲得當前迭代時的value變量值。 ```javascript var jsonData = JSON.parse(responseBody); tests['Response has data value'] = jsonData.form.foo === data.value ``` #### JSON對象與字符串轉換 ##### 將JSON對象(對象或數組)轉JSON字符串 ```javascript var array = [1, 2, 3, 4]; var jsonString = JSON.stringify(array) ``` ##### 將JSON字符串轉JSON對象Object ```javascript var array = "[1, 2, 3, 4]"; var jsonObject = JSON.parse(array); ``` ##### XML字符串轉JSON對象Object ```javascript var jsonObject = xml2Json(XMLString); ``` #### 請求/響應相關屬性 ##### 請求屬性 **request:** 對象類型, *只讀* ```javascript console.log("request中的form-data對象:",request.data); console.log("request中的headers對象:",request.headers); console.log("request中的meth字符串:",request.method); console.log("request中的url字符串:",request.url); ``` ![](https://box.kancloud.cn/09515ebe6d22112e5a5c04bdbe1591d7_879x582.jpg) ##### 響應屬性 響應屬性,只能在Tests Script中使用 **responseBody:** 響應body的原始字符串 **responseTime:** 響應時間,毫秒 **responseCode:** 響應碼對象類型 **tests:** 檢查點對象類型,需要我們自動填充檢查點 ```javascript console.log("body字符串:",responseBody); console.log("響應時間:",responseTime); console.log("響應碼對象:",responseCode); tests["響應時間小于1000毫秒"]=responseTime<1000; console.log("檢查點對象:",tests) ``` 檢查點運行結果顯示如下: ![](https://box.kancloud.cn/6f940d3055293fd2a76dfa39d68749fb_461x140.jpg) 控制臺信息輸出如下: ![](https://box.kancloud.cn/8cfddadd97ee32c67056d4b12e9192b2_788x672.jpg) #### 響應結果解析 Postman的請求響應信息,會保存在`pm.response`對象中。 ##### 將響應內容轉成JSON對象 ```javascript pm.response.json() ``` ##### 將響應內容轉成text字符串 ```javascript pm.response.text() ``` #### 發送異步HTTP請求 ```javascript pm.sendRequest("http://postman-echo.com/get", function (err, response) { console.log(response.json()); }); ``` ### 斷言 斷言(檢查點)的寫法有多種,但是實質上都是往一個叫`tests`的字典對象中填充內容,包含“檢查點名稱”與“檢查點結果”,檢查點名稱是一個描述字符串,而檢查點結果則是一個布爾值(表達式), #### 斷言的兩種原生寫法 **方法一:** ```javascript tests["響應時間小于1000毫秒"]=responseTime<1000; // 檢查點結果是一個表達式 ``` 運行后,檢查點結果在“Test Results”中顯示如下 ![](https://box.kancloud.cn/45892945e83c6836dd6409a37da8ae73_452x142.jpg) **方法二:** ```javascript pm.test("檢查點名稱",function(){ // 檢查點結果是一個回調函數(這個回調函數的返回值也將會是一個布爾值) pm.expect(...); }); ``` #### 響應Body為字符串時,斷言包含特定字符串 ```javascript pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); }); ``` #### 響應Body為字符串時,斷言完全匹配特定字符串 ```javascript pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); }); ``` #### 響應Body為JSON格式時,斷言具體值 ```javascript pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); }); ``` #### 斷言響應時間 ```javascript pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); }); ``` #### 斷言響應碼 ```javascript pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); ``` ### 全局函數 pm.* 詳解 pm對象,包含正在執行的腳本的所有信息。 - 異步發送HTTP/HTTPS請求。 pm.sendRequest:Function ```javascript // 發送一個GET請求 pm.sendRequest('https://postman-echo.com/get?foo1=bar1&foo2=bar2', function (err, res) { if (err) { console.log(err); } else { console.log(res.text()); } });; // 發送一個帶參數的POST請求 const echoPostRequest = { url: 'https://postman-echo.com/post', method: 'POST', header: 'headername1:value1', body: { mode: 'raw', raw: JSON.stringify({ key: 'this is json' }) } }; pm.sendRequest(echoPostRequest, function (err, res) { console.log(err ? err : res.json()); }); ``` - 判斷全局變量是否存在 pm.globals.has(variableName:String):function → Boolean - 獲取全局變量 pm.globals.get(variableName:String):function → * - 設置全局變量 pm.globals.set(variableName:String, variableValue:String):function - 刪除某個全局變量 pm.globals.unset(variableName:String):function - 清空所有全局變量 pm.globals.clear():function - 判斷環境變量是否存在 pm.environment.has(variableName:String):function → Boolean - 獲取環境變量 pm.environment.get(variableName:String):function → * - 設置環境變量 pm.environment.set(variableName:String, variableValue:String):function - 刪除某環境變量 pm.environment.unset(variableName:String):function - 清空環境變量 pm.environment.clear():function - 獲取某變量 pm.variables.get(variableName:String):function → * - 返回請求url pm.request.url:Url - 返回請求header 列表 pm.request.headers:HeaderList - 返回響應碼,如 200 pm.response.code:Number - 返回響應消息,如“OK” pm.response.reason():Function → String - 返回響應頭headers列表 pm.response.headers:HeaderList - 返回響應時間,毫秒 pm.response.responseTime:Number - 返回響應Body字符串 pm.response.text():Function → String - 返回響應Body json對象 pm.response.json():Function → Object - 判斷是否存在某cookie pm.cookies.has(cookieName:String):Function → Boolean - 獲取某cookie pm.cookies.get(cookieName:String):Function → String - 編寫斷言 pm.test(testName:String, specFunction:Function):Function ```javascript pm.test("response should be okay to process", function () { pm.response.to.not.be.error; pm.response.to.have.jsonBody(''); pm.response.to.not.have.jsonBody('error'); }); ``` - 通用的斷言函數 pm.expect(assertion:*):Function → Assertion <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>

                              哎呀哎呀视频在线观看