今天跟大家一起學習如何在jmeter中做json數據對比,希望對大家有幫助。
Jmeter中JDBC Request和BeanShellPostProcessor的結合使用方法以及json數據對比;
一、Jmeter連接數據庫
1. 下載對應數據庫的驅動包到jmeter安裝目錄的lib下ext文件中,並導入到jmeter的測試計劃中,本實例中使用的是mysql如下所示:
點擊測試計劃-->點擊瀏覽-->選中mysql驅動jar包-->打開
2. 添加線程組,並在線程組下新建一個JDBC Connection Configuration配置元件,詳細配置如下:
其中, Variable Name:testdb 定義變量名稱,作用:說明哪個JDBC Request需要引用此配置,jdbc請求時需要用到此變量,變量值自定義保持一致即可;
Database Connection Configutration配置要訪問的數據庫信息
- Database URL:數據庫連接的信息
- JDBC Driver class:com.mysql.jdbc.Driver 數據庫的連接驅動名稱
- Username:數據庫的用戶名
- Password:數據庫的密碼
3. 新建一個JDBC請求,測試連接數據庫,詳細步驟如下:
Variable Name:輸入需要引用的JDBC配置(當前輸入的數值與JDBCConnection Configuration相同的名稱),兩者的變量名稱是需要一致的 ,就代表引用哪一個數據庫連接Query Type:輸入查詢的類型(默認選擇Select Statement,即只執行第一條select語句)
Restult Variable name:將所查詢的結果放到此結果集中(result)
4. 添加BeanShell PostProcessor並從中取出結果集
取出結果集中的數據:
columnValue =vars.getObject(“resultObject”).get(0).get(“Column Name”);
- vars.getObject(“resultObject”):代表從哪個結果集中取數據
- get(0):取第幾行
- get(“ColumnName”):取哪一列(哪一列即爲JDBCRequest查詢結果中的字段名)
備註:
1)columnValue= vars.getObject(“resultObject”).get(0).get(“Column Name”),返回的類型是Object類型。
2)需要將Object類型轉換成String類型(取出對象的名稱.toString())。
例如:columnValueResule.toString()),其中columnValueResule是取出的對象名稱
3)取出來的變量放到jmeter中,用此方法:vars.put(“key”,Value)。
例如:vars.put(“xxxx”,DBclassname.toString());如果要引用此查詢語句的結果,只需要引用key值就可以https://www.cnblogs.com/baoziluo/p/9099375.html
二、Jmeter對Json格式數據的三種處理方式
示例,若從如下json數據中取loginName的值:
{
"flag":true,
"message":"",
"data":{
"user":{
"id":"0200167a-03f5-49c1-a822-886fad2e8413",
"name":null,
"loginName":"user",
"passowrd":null,
"userType":-1,
"userTypeText":"普通用戶"
},
"extands":[
{
"id":"f212abcd-7b73-4dcd-9614-81d7331d488c",
"name":"愛好",
"nameCode":"like"
}
]
}
}
1. 使用正則表達式提取請求響應中的值
1) 添加Jmeter正則表達式提取器
添加—>後置處理器—>正則表達式提取器
2)Jmeter正則表達式提取器控制面板
其中:
引用名稱:定義變量名稱,後續請求將要引用到的變量名,如填寫的是:login_name,後面的引用方式是${ login_name}
正則表達式:提取內容的正則表達式,相當於lr中的關聯函數
() 括起來的部分就是需要提取的,對於你要提的內容需要用小括號括起來
. 點號表示匹配任何字符串
+ 一次或多次
? 在找到第一個匹配項後停止
模板:用$$引用起來,如果在正則表達式中有多個正則表達式(多個括號括起來的),則可以是$2$,$3$等,表示解析到的第幾個值給login_name。例如:$1$表示匹配到的第一個值
匹配數字:0代表隨機取值,-1代表所有值,此時提取結果是一個數組,其餘正整數代表第幾個匹配的內容提取出來。如果匹配數字選擇的是-1,還可以通過${ login_name _1}的方式來取第1個匹配的內容,${ login_name _2}來取第2個匹配的內容。
缺省值:正則匹配失敗時,取的值
2. 使用 JMeter 的插件JSONPath 來獲取 JSON 數據中字段的數據
1)添加—>後置處理器-JSON Extractor
2)使用方法
Variable names : 變量名稱
JSONPath Expression:JSON表達式
Match Numbers:匹配哪個,可爲空即默認第一個
Default Value:未取到值的時候默認值
備註:jmeter中通過vars.get("loginName")來讀取;
3. 使用JMeter的BeanShell PostProcessor來處理Json數據
1)將json-lib-2.4-jdk15.jar拷貝到 jmeter lib 文件夾下後重啓 jmeter
2)在Sampler上面添加後置處理器-->BeanShell PostProcessor
3)在Sampler上面添加斷言--> BeanShell斷言
本文列舉出了三種可用的從Json 格式的返回值中提取數據的方法。正則表達式對於簡單的 Json 格式數據的處理非常快速標準化,JsonPath插件可以創建能夠被維護的腳本,引入fastjson庫的BeanShell 依賴於 Java 語言的靈活性可以進行進一步的開發;
本次 到此,大家自己仔細看看,體會體會,有想法,歡迎交流!