1. 程式人生 > >jmeter學習之路一:學會使用jmeter API

jmeter學習之路一:學會使用jmeter API

在使用jmeter過程中如果要做一些有邏輯性的驗證通常需要寫一些指令碼,在寫指令碼過程中就特別需要知道jmeter有哪些方法可供使用.

比如需求如下:有一個http的請求,每次請求引數可變,現在要求:

1.獲取到請求的引數,並新增一個引數重新請求

2.獲取到請求返回值並判斷是否返回了code:200

下面一點點解析如何去做:

1).首先既然是http請求就新增一個HTTP 請求的 Sampler,然後將域名,埠,請求引數等填好,既然引數可變就不寫死引數的值,使用引數變數實現即可(先新增一個使用者自定義引數的配置元件,新增各個引數,如新增了para,那麼http請求的Smapler中變數para的值直接用${para}獲取到).

2)既然已經新增好了http請求的Smapler接下來分析要實現的第一個需求:獲取到請求的引數,並新增一個引數重新請求.既然是要獲取請求引數並且要新增引數肯定是需要在請求發出去之前新增的,所以給http Sampler添加個前置處理器,在這兒我選擇了BeanShell PreProcessor,因為初次使用不知道怎麼獲取引數,於是只能尋求API幫助,BeanShell PreProcessor的API地址:http://jmeter.apache.org/usermanual/component_reference.html#BeanShell_PreProcessor,檢視後發現提供了幾個變數,其中:

  • sampler - (Sampler)- gives access to the current sampler

看上去是能提供當前Sampler的一些資訊,繼續開啟Sampler發現是一個介面,看到有很多類實現了該介面,此sampler物件到底是哪個類的例項物件呢.因為目前在http Sampler裡因此應該是HTTPSampler的例項物件,檢視HTTPSampler有哪些方法時發現並沒有提供獲取引數相關的方法,再看發現有個HTTPSamplerBase基類,檢視該類方法後發現有個

方法看上去能實現我的需求,使用sampler.getPath()後果然成功獲取到了path,接下來就把要新增的引數新增後直接再sampler.setPath(path+"&sign="+sign);即可.到此需求一已經完成

3)接下去繼續實現需求二:獲取到請求返回值並判斷是否返回了code:200,需求二是獲取返回值的,因此是在請求發出後獲取,因此添加個後置處理器,這兒選擇的是:BeanShell PostProcessor,通過檢視API發現有個

  • prev - (SampleResult) - gives access to the previous SampleResult (if any)
看上去是獲取result的,檢視SampleResult有個

通過prev.getResponseDataAsString()確實獲取到了返回值,因為返回值是json的,通過json解析出來code的值放到變數code裡,然後增加BeanShell斷言進行判斷即可

至此,兩個需求都已經實現! end!