python軟件測試Jmeter性能測試JDBC Request(結合數據庫)的使用詳解
這個 Sampler 可以向數據庫發送一個 jdbc 請求(sql 語句),并獲取返回的數據庫數據進行操作。它 經常需要和 JDBC Connection Configuration 配置原件(配置數據庫連接的相關屬性,如連接名、密碼 等)一起使用。
1.本文使用的是 mysql 數據庫進行測試
數據庫的用戶名為 root,用戶名密碼為 *********(看個人數據庫用戶名和密碼填寫)
2、數據庫中有表:test,表的數據結構如下:
表中數據如下:select * from test (不要添加分號作為結尾。)
3、添加需要的驅動 jar 包使用不同的數據庫,我們需要引入不同的 jar 包。
方式 1:直接將 jar 包復制到 jmeter 的 lib 目錄mysql 數據庫:無需引入其他數據庫驅動 jar 包。
sql server 數據庫:下載 sqljdbc4.jar 放到 jmeter 根目錄的 lib 目錄下
oracle數據庫:將oracle數據的安裝目錄下面的product10.2.0db_1jdbclibojdbc14.jar 放 到 jmeter 根目錄下的 lib 目錄下
方式 2:通過 Test Plan假如我們不使用將 jar 復制到 jmeter 的 lib 目錄的方式,我們還可以使用 Jmeter 的 Test Plan 引入 相應的 jar 包,如下面引入 oracle 數據的 jar 包。
重要參數說明:Variable Name:
數據庫連接池的名稱,我們可以有多個 jdbc connection configuration,每 個可以起個不同的名稱,在 jdbc request 中可以通過這個名稱選擇合適的連接池進行使用。
Database URL:
數據庫 url,jdbc:mysql://主機 ip 或者機器名稱:mysql 監聽的端口號/數據庫 名稱, 如:jdbc:mysql://localhost:3306/test
**JDBC Driver class:**JDBC 驅動
**username:**數據庫登陸的用戶名
**passwrod:**數據庫登陸的密碼
不同數據庫具體的填寫方式,可以參考下面的表格:
填寫后大致如下:
重要的參數說明:
Variable Name:數據庫連接池的名字,需要與 JDBC Connection Configuration 的 Variable Name Bound Pool 名字保持一致
Query:填寫的 sql 語句未尾不要加“;”
Parameter valus:參數值
Parameter types:參數類型,可參考:Javadoc for java.sql.Types
Variable names:保存 sql 語句返回結果的變量名
Result variable name:創建一個對象變量,保存所有返回的結果
Query timeout:查詢超時時間
Handle result set:定義如何處理由 callable statements 語句返回的結果
執行到這里,我們已經將數據從數據庫中原樣的查出來了,但具體如何之取出我們需要的數據呢,顯然, 假如我們查詢的 sql 返回的只是一個數據,上面的方式已經可以滿足我們的需求的,如我們查詢數據的記 錄數,
select count(*) from test
查詢出來的結果就是我們需要的內容,或者通過正則表達式的獲取即可獲取我們的內容。 但假如像上面那樣子,我們獲取出來的是多行數據,我們需要如何來對數據進行遍歷,只獲取出我們 需要的數據呢?請看下面的分析。
四、JDBC Request 參數化方法(一)、定義變量,在 sql query 中使用變量:
1、在 Test Plan 中定義一個變量(當然也可以使用參數化:Jmeter 參數化):
2、sql query 中使用${變量名}的方式引用:
方法(二)、在 sql query 中使用”?“作為占位符,并傳遞參數值和參數類型,如下圖所示:
1、傳遞的參數值是常量,如圖傳遞 2 個變量,多個變量使用” , “ 分隔。這里假如你有數據是 int 類 型的,也要在 Parameter types 那里標示為 varchar 類型,否則無法運行。
2、傳遞的參數值是變量,使用${變量名}的方式
jmeter 官網給的解釋是:如果給這個參數設置了值,它會保存 sql 語句返回的數據和返回數據的總行數。 假如,sql 語句返回 2 行,3 列,且 variables names 設置為 A,C,那么如下變量會被設置為:
A_#=2 (總行數)A_1=第 1 列, 第 1 行A_2=第 1 列, 第 2 行C_#=2 (總行數)C_1=第 3 列, 第 1 行C_2=第 3 列, 第 2 行
如果返回結果為 0,那么 A_#和 C_#會被設置為 0,其它變量不會設置值。 如果第一次返回 6 行數據,第二次只返回 3 行數據,那么第一次那多的 3 行數據變量會被清除。 可以使用KaTeX parse error: Expected group after ’_’ at position 3: {A_̲#}、{A_1}…來獲取相應的值
示例:我們還是用上面的數據庫,把所有數據查出來,test 表有有 3 個字段,5 條記錄(忘記了的可以回到 第一步那里查看)
1、添加一個jdbc request名為”參數4“,添加一個”Debug Sampler“用來查看輸出的結果,設置 variables name 為 column1,column2,column3:
2、執行結果:
解析:column1 代表第一列所有的數據,column1_#可以獲取到第一列的行數 column1_n:獲得第一列第 n 行的數據。 column2 和 column3 的功能類似, 假如我們只需要第一列和第三列的數據,可以寫成 column1,column3,中間的','不可以省略。
六、Result variable name 參數使用方法:如果給這個參數設置值,它會創建一個對象變量,保存所有返回的結果,獲取具體值的方法:columnValue = vars.getObject(“resultObject”).get(0).get(“Column Name”)
執行結果:
到此這篇關于python軟件測試Jmeter性能測試JDBC Request(結合數據庫)的使用詳解的文章就介紹到這了,更多相關python Jmeter性能測試 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
