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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] 斷言:依靠軟件程序自動判斷操作結果的正確性,用于檢查測試中得到的響應數據等是否符合預期。在接口測試用例中沒有斷言的接口用例是無效的,一個接口的斷言有三個層面,一個是HTTP狀態碼的斷言,另外一個是業務狀態碼的斷言,最后是某一接口請求后服務端響應數據的斷言 Jmeter最常用斷言:Response Assertion(響應斷言),Json斷言,beanshell斷言 >[success] ## 一:Response Assertion(響應斷言) 響應斷言:可選擇斷言驗證的范圍(URL,響應頭,響應碼,響應體,響應附件),匹配的模式(純文本還是正則表達式匹配) >[info] ### **1:操作響應斷言:添加-斷言-響應斷言** :-: ![](https://img.kancloud.cn/e7/b6/e7b6c442a37725b518728b5b46622598_593x548.png) 對web請求http狀態碼的斷言 1.對http請求狀態碼的驗證 :-: ![](https://img.kancloud.cn/81/02/8102af7ba3c2cd744cb4f1a1c52ba2c9_1152x720.png) <br> <br> **Apply to (響應斷言的應用范圍)** Main sample and sub-samples:作用于父節點取樣器及對應子節點取樣器   Main sample only:只作用于父節點取樣器(一般的斷言都選這個)   Sub-samples only:只作用于子節點取樣器   JMeter Variable:只作用于jmeter變量(可寫入正則提取的響應值) **測試字段:**   響應文本:請求的響應文本信息,不包含響應頭信息。最常用的斷言字段   響應代碼:對應http返回的響應碼   響應信息:匹配響應信息   響應頭:響應頭信息   URL樣本: 請求url,如果有重定向包含重定向url   文檔(文本):通過Apache Tika從各種的文檔中提取的文本進行驗證,包括響應文本,pdf、word等等各種格式   忽略狀態(Ignore Status): 一個請求多項響應斷言時,忽略某一項斷言的響應結果,而繼續下一項斷言     **模式匹配規則**   包括:響應的結果中包含指定的文本或者字段值,支持正則表達式   匹配:完全匹配,期望值與實際結果必須完全一致,一般結合正則表達式使用   相等:響應結果與指定的內容完全一致,不支持正則表達式   字符串:返回結果,包含指定的字符串,不支持正則表達式   否:不進行匹配 <br> <br> >[info] ### **2:添加斷言結果,添加-監聽器-斷言結果** :-: ![](https://img.kancloud.cn/a8/4e/a84e4a12f326e0110a57937c562c7372_702x586.png) <br> <br> >[info] ### **3:發送請求,查看斷言結果** :-: ![](https://img.kancloud.cn/1f/8e/1f8e399c96dda257aba003a9ea79e1ef_1152x720.png) <br> <br> <br> <br> >[success] ## **二:Json斷言** JSON斷言可以對服務器返回的JSON文檔進行驗證。 JSON斷言有兩種使用模式: 1.根據JSONPath能否在JSON文檔中找到路徑; 2.根據JSONPath提取值并對值進行驗證。 若文檔格式為非JSON則斷言失敗;找不到路徑斷言失敗;提取值與預期值不一致斷言失敗。 <br> <br> >[info] ### **1:添加-斷言-Json斷言** :-: ![](https://img.kancloud.cn/ea/b8/eab8549d667d1c6357817ec44d43e9a5_594x526.png) 若響應數據返回是Json格式,我們可以對其進行json斷言操作,在請求的察看結構樹響應數據里提取數值對其進行斷言,示例提取data里的phone進行斷言如下 :-: ![](https://img.kancloud.cn/eb/0e/eb0ed62f79c293febcddcfba8e8c3852_1152x720.png) :-: ![](https://img.kancloud.cn/19/c6/19c61271cce7189c2c51593ed3c5a51e_876x150.png) 可看到實際響應結果與預期不一致,故fail <br> <br> <br> <br> >[success] ## **三:Beanshell斷言**### **Bean Shell常用內置變量**    JMeter在它的BeanShell中內置了變量,用戶可以通過這些變量與JMeter進行交互,其中主要的變量及其使用方法如下: **log**:寫入信息到jmeber.log文件,使用方法:log.info **ctx**:該變量引用了當前線程的上下文,使用方法可參考:org.apache.jmeter.threads.JMeterContext。 **vars**?- (JMeterVariables):操作jmeter變量,這個變量實際引用了JMeter線程中的局部變量容器(本質上是Map),它是測試用例與BeanShell交互的橋梁,常用方法: <br> <br> &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;a) `vars.get(String key):`從jmeter中獲得變量值 &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;b) `vars.put(String key,String value):`數據存到jmeter變量中 <br> <br> **props**?- (JMeterProperties - class java.util.Properties):操作jmeter屬性,該變量引用了JMeter的配置信息,可以獲取Jmeter的屬性,它的使用方法與vars類似,但是只能put進去String類型的值,而不能是一個對象。對應于java.util.Properties。 <br> <br> &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;a) `props.get("START.HMS");`  注:START.HMS為屬性名,在文件jmeter.properties中定義 &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;b) `props.put("PROP1","1234"); ` <br> <br> **prev**?- (SampleResult):獲取前面的sample返回的信息,常用方法: <br> <br> &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;a)?**`getResponseDataAsString():`獲取響應信息** &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;b)?**`getResponseCode() :`獲取響應code** <br> <br> **sampler**?- (Sampler):gives access to the current sampler ?在這里除了可以使用beanshell的內置變量外,主要通過 Failure 和 FailureMessage來設置斷言結果。 :-: ![](https://img.kancloud.cn/cc/45/cc45568f2b233451cc124649822540f2_1152x720.png) ``` if ("200".equals(""+ResponseCode) == false ) { // 響應碼不等于200時,設置斷言失敗,并輸出失敗信息 Failure=true ; FailureMessage ="Response code was not a 200 response code it was " + ResponseCode + "." ; print ( "the return code is " + ResponseCode); // this goes to stdout log.warn( "the return code is " + ResponseCode); // this goes to the JMeter log file } else { // 響應碼等于200時,設置斷言成功,并輸出成功信息 Failure=false; FailureMessage = "Return true, and the response code was " + ResponseCode; } } ```
                  <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>

                              哎呀哎呀视频在线观看