1. 程式人生 > 其它 >【力扣】440. 字典序的第K小數字

【力扣】440. 字典序的第K小數字

 目錄

Jmeter常用後置處理器

  1. 在一個執行緒組中,B請求需要使用A請求返回的資料,也就是常說的關聯,將上一個請求的響應結果作為下一個請求的引數,這裡就需要用到後置處理器了。下面主要講解常用的兩種後置處理器:正則表示式提取器、json提取器。

正則表示式提取器

我們以could IDE登入為例,登入成功後,其他介面的請求頭中的Authorization需要依賴登入介面的返回資料accessToken,下面以這個例子講解如何使用正則表示式提取器來獲取accessToken值。

我們可以在登入介面中增加一個正則表示式提取器。

名稱、註釋

這裡根據實際情況填寫即可。

Apply to

作用範圍(即返回內容的提取範圍)

  1. Main sample and sub-samples: 作用於父節點的取樣器及對應子節點的取樣器
  2. Main sample only:僅作用於父節點的取樣器,一般預設選擇該選項;
  3. Sub-samples only:僅作用於子節點的取樣器;
  4. JMeter Variable:作用於jmeter變數(輸入框內可輸入jmeter的變數名稱);

要檢查的響應欄位

需要檢查的響應報文的範圍

  1. 主體:響應報文的主體,一般預設選擇該選項;
  2. Body(unescaped):主體,響應的主體內容且替換了所有的html轉義符,注意html轉義符處理時不考慮上下文,因 此可能有不正確的轉換,不太建議使用;
  3. Body as a Document:從不同型別的檔案中提取文字,注意這個選項比較影響效能;
  4. Response Headers:響應資訊頭;
  5. Request Headers:請求資訊頭;
  6. URL:統一資源定位符,即Internet上用來描述資訊資源的字串
  7. Response Code:響應狀態碼,比如200404
  8. Response Message:響應資訊

引用名稱

Jmeter變數的名稱,儲存提取的結果;即下個請求需要引用的值、欄位、變數名,例子中我提取的是accessToken;
引用方法:其他地方引用該值的方法,${引用名稱},如:${accessToken}

正則表示式

使用正則表示式解析響應結果;
提取accessToken表示式:”accessToken”:”(.+?)”,表示從accessToken開始提取,取到一個值就停止,此處用到的正則表示式操作符說明如下:

() :封裝了待返回的匹配字串;
. :匹配任何單個字串;
+: 一個或多個值;
? :不要太貪婪,在找到第一個匹配項後停止;

目前我們在做介面測試中用到的正則表示式操作符不多,如有需要可自行學習其他的正則表示式操作符。

模板

從匹配的結果中建立一個字串,這是通過正則表示式匹配出來的一組值,意為使用提取到的第幾個值(可能有多個值匹配,因此使用模板);從1開始匹配,以此類推,我們一般用 $1$ 即可;

匹配數字

正則表示式匹配資料的結果可以看做一個數組,表示如何取值:0代表隨機取值,正數n則表示取第n個值(比如1代表取第一個值),負數則表示提取所有符合條件的值,我們一般用0即可;

預設值

匹配失敗時候的預設值;通常用於後續的邏輯判斷,一般通常為特定含義的英文大寫組合,比如:ERROR,一般不填;

檢查獲取值及值引用

最後,根據上面的說明,完成配置,然後可以先新增一個監視器(檢視結果樹),檢查是否取到了對應的值。

根據正則表示式的不同,有的時候提取到的引數存在多個值,呼叫時用${accessToken_1},${accessToken_2}…,如果想要得到匹配出的引數的個數,用${accessToken_matchNr},如果想隨機選取一個,只需要將匹配數字設為0,使用${accessToken}呼叫即可。

Json提取器

  1. 此提取器用於提取請求返回結果中的某個值或某一組值,用法比正則表示式簡單,標準寫法為 $.key,其中key為返回結果map中的一個鍵,如果是多層則繼續用 .key 進行即可。如果遇到keyvalue值為一個list,則使用 .key[n],其中nlist中元素的編號;
  1. 名稱:節點的名稱,顯示在檢視結果樹中,自己根據實際情況定義;
  2. 註釋:對該節點進行註釋,可不填;
  3. Apply to:作用範圍,同正則表示式一樣,此處預設值即可;
  4. Names of created variables:變數名;
  5. JSON Path expressions:json表示式,通過該表示式來提取對應的值;
  6. Match NO.:-1為匹配所有,0為隨機,其他則從1開始,可以不填,也可以根據實際情況填寫;
  7. Default Values:預設值,匹配不到的時候取預設值,可不填;

我們可以在檢視結果樹中進行json語法的測試,測試OK了再放到json提取器的表示式中,下面我們講解常用的7種提取情況。

提取第一層中的值

提取code值,表示式為:$.code

提取第二層中的值

提取total值,表示式為:$.data.total

提取第三層中的某個值

當節點下存在陣列時,用json提取器則非常的方便,提取第一個陣列中的email值,0表示第一個陣列;
表示式為:$.data.items[0].email

提取列表下全部的某一個元素

提取items中返回的所有email值;
表示式為:$.data.items[ * ].email,* 號意味著獲取所有列表元素;

提取特定條件的某個值

提取id為264的那個元素的phone值;
表示式為:$.data.items[?(@.id==264)].phone

寫法 ?(@.id==264) 為固定寫法,常用於列表內元素的篩選,如果值為字串,則記得加雙引號。

獲取前N個值

提取items下的前兩個元素的id值;
表示式為:$.data.items[:2].id;

$.result.records[2].id 是排除前兩條資料;
$.result.records[-2].id 是排除後兩條資料;

獲取固定條件下的多個key的value值

提取id為264的username、email和phone值;
表示式為:$.data.items[?(@.id==264)].[“username”,”email”,”phone”]

Jmeter的後置處理器有多種,此處只講解了目前工作中常用的兩種後置處理器,如果想了解更多,可自行了解學習。