jmeter之json數據對比

今天跟大家一起學習如何在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 語言的靈活性可以進行進一步的開發;

  本次 到此,大家自己仔細看看,體會體會,有想法,歡迎交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章