【重點】Jmeter----- 將 JDBC Request 查詢結果作為下一個接口參數方法(二)


一、說明

  jmeter與數據庫mysql已連接成功

二、需求

  1、前置條件:

    1、已user數據庫的前8位手機號碼作為行動計划的名稱

    2、行動計划的日期是2018-10-17

  2、操作步驟: 

    1)獲取到某個月份的行動計划,
    2)設置參數進行循環添加行動計划
    3)統計某個月份的行動計划數量
    4)將行動計划標記為已完成
    5)刪除某個月份下所有的行動計划

  3、預期結果:

    行動計划添加成功,並且刪除所有的某個月份下的行動計划成功

三、分析與實踐

  實踐步驟:

    1)首先添加一個jdbc connection configuration

    2)添加一個jdbc request查詢出user數據庫的前8位mobile手機號碼

    3)添加一個用戶自定義變量

    4)確定是否查詢出數據

    5)提取mobile的數據

    6)驗證參數化是否成功

    7)添加計數器

    8)把mobile的值傳遞進去

    9)設置線程數或者添加一個循環控制器

    10)那我們的東西進行重新排序

1、需求:存在一個user表,表結構如下:

  

2、分析

  1)要查詢出user數據庫的前8位mobile手機號碼,那么首先需要建立一個jdbc request,連接本地數據庫看,分別查出我們需要的mobile

  2)todo_start為了方便管理,這個值我們設置做成了一個變量,方便管理

  3)查詢出所有的mobilemobile值不一定只有一個,因此我們怎么確定每次取到的值作為參數去請求下一個接口?這里需要做一個循環

  4)我事先不知道能夠查詢出某個月份的行動計划有多少條,那如何知道我們需要循環多少次?

3、實踐

  1)首先添加一個jdbc connection configuration,連接的方式根據自己的數據庫定

  

  2、添加一個jdbc request查詢出user數據庫的前8位mobile手機號碼

  

  3、確定是否查詢出數據

  這個時候可以使用添加查看結果樹,看看我們獲取到的mobile的值,如下是獲取到的結果

  

  4、提取mobile的數據

  查看jdbc request的request里面,查看底部的variable name填上你想使用的變量名,注意這個接口后面要自己用到,

  

  5、參數化進行傳遞

   如果直接將mobile傳入${mobile}會發現請求里面mobile參數化並沒有成功,那為什么會不成功呢,原來當使用 jdbc request 的結果作為參數時,要寫成 ${username_0}這樣子,username就是你的變量名,0 代表索引,索引是 0 就表示第一行,索引是 1 就表示第二行。

例如,我想取mobile查詢結果第 4 行的數據,那我的變量值就需要寫成 ${mobile_3},再看看上面mobile查詢結果是怎么展示的
  

  6、添加計數器

  

  

由於我們從第 2 行開始取值,索引是 1,所以啟動填 1,每次我們往后多 1,所以遞增也填 1,最大值可不填,number format 就是數字格式,如果填 000,取值是 12,那最后會顯示為 012,而我們只需要本身的數字,所以就填 0,引用名稱就是后面需要用的變量名

有了計數器,能遞增了,那我們就需要

7、把mobile的值傳遞進去

  我們上面說了 ${mobile_1}是取第二行,${mobile_2}是取第三行,依次類推,那我們要從第二行也就是索引等於 1 開始取,一直到最后。上一步添加的計數器就起作用了,我們設置的計數器是從 1 開始計數,每次遞增 1,那么跟我們想要的完全吻合,index 就是我們設置的計數器的變量名,可以直接用他來代替我們的索引 1,2,3,4 等等,那我們現在來把mobile 和index兩個變量拼接起來,這里如果你直接寫成 ${umobile_index} 或者 ${mobile_${index}}都是不行的,因為兩個變量不能直接拼接,需要用到一個函數 __V,不了解這個函數的可以百度看看,作用就是可以使 2 個變量可以拼在一起,所以我們拼接后的 mobile 變量應該是 ${__V(mobile_${index})}

  

8、設置線程數或者添加一個循環控制器 

  但是我們並不知道到底需要循環多少次或者需要設置多少線程數,才能讓mobile剛好傳完,這個時候,我們需要多加一個 jdbc request 了,來查詢出我們符合條件的數據有多少條。select count("mobile") from user where id between 1 and 8;就是查詢符合條件的數據總數,同理我們在 variable names 填上一個變量名,以供后面使用,這里我取 count
  

  

  count 變量是我們之前查出來的所有數據的總數,這個總數是多少就說明我們需要多少線程或多少次循環。ok,那我們在 http 請求上右擊,點擊插入上級 – 邏輯控制器 – 循環控制器,循環次數,我們使用count 變量,由於 count變量查詢出來的結果肯定只有一個,那我們可以直接取結果的第二行數據,索引是 1,即${count_mobile_1},這樣就能把次數確定。這里其實不能用添加線程的方式來做,因為這幾個 jdbc request 都在這個線程里,如果設置多線程,jdbc request 也會多次請求,不合理,所以我們選擇更好的循環控制器

  

 

所有的東西都設置完了,就需要

9、重新進行排序后運行即可

 

參考鏈接:https://blog.csdn.net/u010978840/article/details/78227852

  

 

 

  

  

 

  


免責聲明!

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



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