jmeter數據庫查詢與接口返回進行對比


  今天在群里又看到了一個小伙伴問類似的問題,【jmeter如何實現數據庫查詢出來的結果與接口返回的結果進行對比判斷,或者數據庫兩字段的相加減與接口返回進行對比】。其實都一樣,因為你把運算放在查詢那里就行了,運算放beanshell腳本里面會影響性能。這事其實很簡單,來理一下思路:

1、從數據庫中拿數據:用JDBC Request或beanshell后置處理器;

2、從接口返回中拿數據:用正則表達式提取器;

3、對比:用beanshell斷言。

 ---------------------------------------------------------------------------------------------------------------------

一、數據庫查詢

  添加一個【JDBC Connection Configuration】先連接上數據庫(具體可看jmeter連接Mysql),然后添加【JDBC Request】寫SQL語句查詢出所需要的數據,如下圖:

若使用Beanshell PostProcess,可以這樣寫:

Value = vars.getObject("Result_variable_name").get(0).get("margin"); //從查詢結果中取出margin列的第一行值,第一行index從0開始算get(0)
vars.put("result",Value);  //將取出的值賦給變量result

 

二、接口返回

  從response中拿數據,使用正則表達式提取器,這里就不啰嗦了(可以看jmeter關聯),直接放圖,如下:

  上述兩步完成之后,可以添加一個Debug Sampler或者其他方式看看取到的參數是否正確。如果和自己的預期有出入,那么仔細檢查SQL,正則表達式等。

 

三、Beanshell斷言

  beanshell中的代碼其實是很簡單的,就是一個if...else,如圖:

if("${margin_1}".equals("${uid}")) //數據庫的取值與接口正則取值比對
{
    System.out.println("OK");
}
else
{ 
    System.out.println("fail");
}

  數據庫取到的值[margin_1]和接口返回的值[uid]進行對比,其中margin_1是指sql查詢出來的第一個數據,具體用法請了解JDBC Request下面的參數,而${margin_1/uid}是jmeter調用動態參數值的方式。運行之后可以在jmeter的日志中看到結果,如下(我從數據庫拿的是時間戳的相減值,接口是用戶的uid,肯定是不相等的):

-----------------------------------------------------------------分割線----------------------------------------------------------

  至此,就沒了。這里只闡述了數據對比這個操作,至於成功/失敗之后怎么操作,就不繼續說下去了,場景很多嘛。農歷年前在上海的最后一篇博客,明天就請假回家啦,各位明年見。

 

___是非功過有人心,善惡斤兩問閻王


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM