python軟件測(cè)試Jmeter性能測(cè)試JDBC Request(結(jié)合數(shù)據(jù)庫(kù))的使用詳解
JDBC Request
這個(gè) Sampler 可以向數(shù)據(jù)庫(kù)發(fā)送一個(gè) jdbc 請(qǐng)求(sql 語(yǔ)句),并獲取返回的數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行操作。它 經(jīng)常需要和 JDBC Connection Configuration 配置原件(配置數(shù)據(jù)庫(kù)連接的相關(guān)屬性,如連接名、密碼 等)一起使用。
1.本文使用的是 mysql 數(shù)據(jù)庫(kù)進(jìn)行測(cè)試
數(shù)據(jù)庫(kù)的用戶(hù)名為 root,用戶(hù)名密碼為 *********(看個(gè)人數(shù)據(jù)庫(kù)用戶(hù)名和密碼填寫(xiě))
2、數(shù)據(jù)庫(kù)中有表:test,表的數(shù)據(jù)結(jié)構(gòu)如下:

表中數(shù)據(jù)如下:
select * from test (不要添加分號(hào)作為結(jié)尾。)

3、添加需要的驅(qū)動(dòng) jar 包
使用不同的數(shù)據(jù)庫(kù),我們需要引入不同的 jar 包。
方式 1:直接將 jar 包復(fù)制到 jmeter 的 lib 目錄
mysql 數(shù)據(jù)庫(kù):無(wú)需引入其他數(shù)據(jù)庫(kù)驅(qū)動(dòng) jar 包。
sql server 數(shù)據(jù)庫(kù):下載 sqljdbc4.jar 放到 jmeter 根目錄的 lib 目錄下
oracle數(shù)據(jù)庫(kù):將oracle數(shù)據(jù)的安裝目錄下面的\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar 放 到 jmeter 根目錄下的 lib 目錄下
方式 2:通過(guò) Test Plan
假如我們不使用將 jar 復(fù)制到 jmeter 的 lib 目錄的方式,我們還可以使用 Jmeter 的 Test Plan 引入 相應(yīng)的 jar 包,如下面引入 oracle 數(shù)據(jù)的 jar 包。

二、配置 JDBC Connection Configuration
重要參數(shù)說(shuō)明:
Variable Name:
數(shù)據(jù)庫(kù)連接池的名稱(chēng),我們可以有多個(gè) jdbc connection configuration,每 個(gè)可以起個(gè)不同的名稱(chēng),在 jdbc request 中可以通過(guò)這個(gè)名稱(chēng)選擇合適的連接池進(jìn)行使用。
Database URL:
數(shù)據(jù)庫(kù) url,jdbc:mysql://主機(jī) ip 或者機(jī)器名稱(chēng):mysql 監(jiān)聽(tīng)的端口號(hào)/數(shù)據(jù)庫(kù) 名稱(chēng), 如:jdbc:mysql://localhost:3306/test
**JDBC Driver class:**JDBC 驅(qū)動(dòng)
**username:**數(shù)據(jù)庫(kù)登陸的用戶(hù)名
**passwrod:**數(shù)據(jù)庫(kù)登陸的密碼
不同數(shù)據(jù)庫(kù)具體的填寫(xiě)方式,可以參考下面的表格:

填寫(xiě)后大致如下:

三、配置 JDBC Request
重要的參數(shù)說(shuō)明:
Variable Name:數(shù)據(jù)庫(kù)連接池的名字,需要與 JDBC Connection Configuration 的 Variable Name Bound Pool 名字保持一致
Query:填寫(xiě)的 sql 語(yǔ)句未尾不要加“;”
Parameter valus:參數(shù)值
Parameter types:參數(shù)類(lèi)型,可參考:Javadoc for java.sql.Types
Variable names:保存 sql 語(yǔ)句返回結(jié)果的變量名
Result variable name:創(chuàng)建一個(gè)對(duì)象變量,保存所有返回的結(jié)果
Query timeout:查詢(xún)超時(shí)時(shí)間
Handle result set:定義如何處理由 callable statements 語(yǔ)句返回的結(jié)果


執(zhí)行到這里,我們已經(jīng)將數(shù)據(jù)從數(shù)據(jù)庫(kù)中原樣的查出來(lái)了,但具體如何之取出我們需要的數(shù)據(jù)呢,顯然, 假如我們查詢(xún)的 sql 返回的只是一個(gè)數(shù)據(jù),上面的方式已經(jīng)可以滿(mǎn)足我們的需求的,如我們查詢(xún)數(shù)據(jù)的記 錄數(shù),
select count(*) from test
查詢(xún)出來(lái)的結(jié)果就是我們需要的內(nèi)容,或者通過(guò)正則表達(dá)式的獲取即可獲取我們的內(nèi)容。 但假如像上面那樣子,我們獲取出來(lái)的是多行數(shù)據(jù),我們需要如何來(lái)對(duì)數(shù)據(jù)進(jìn)行遍歷,只獲取出我們 需要的數(shù)據(jù)呢?請(qǐng)看下面的分析。
四、JDBC Request 參數(shù)化
方法(一)、定義變量,在 sql query 中使用變量:
1、在 Test Plan 中定義一個(gè)變量(當(dāng)然也可以使用參數(shù)化:Jmeter 參數(shù)化):

2、sql query 中使用${變量名}的方式引用:

方法(二)、在 sql query 中使用”?“作為占位符,并傳遞參數(shù)值和參數(shù)類(lèi)型,如下圖所示:
1、傳遞的參數(shù)值是常量,如圖傳遞 2 個(gè)變量,多個(gè)變量使用” , “ 分隔。這里假如你有數(shù)據(jù)是 int 類(lèi) 型的,也要在 Parameter types 那里標(biāo)示為 varchar 類(lèi)型,否則無(wú)法運(yùn)行。

2、傳遞的參數(shù)值是變量,使用${變量名}的方式

五、Variables names 參數(shù)使用方法:
jmeter 官網(wǎng)給的解釋是:如果給這個(gè)參數(shù)設(shè)置了值,它會(huì)保存 sql 語(yǔ)句返回的數(shù)據(jù)和返回?cái)?shù)據(jù)的總行數(shù)。 假如,sql 語(yǔ)句返回 2 行,3 列,且 variables names 設(shè)置為 A,C,那么如下變量會(huì)被設(shè)置為:
A_#=2 (總行數(shù))
A_1=第 1 列, 第 1 行
A_2=第 1 列, 第 2 行
C_#=2 (總行數(shù))
C_1=第 3 列, 第 1 行
C_2=第 3 列, 第 2 行
如果返回結(jié)果為 0,那么 A_#和 C_#會(huì)被設(shè)置為 0,其它變量不會(huì)設(shè)置值。 如果第一次返回 6 行數(shù)據(jù),第二次只返回 3 行數(shù)據(jù),那么第一次那多的 3 行數(shù)據(jù)變量會(huì)被清除。 可以使用KaTeX parse error: Expected group after '_' at position 3: {A_̲#}、{A_1}…來(lái)獲取相應(yīng)的值
示例:我們還是用上面的數(shù)據(jù)庫(kù),把所有數(shù)據(jù)查出來(lái),test 表有有 3 個(gè)字段,5 條記錄(忘記了的可以回到 第一步那里查看)
1、添加一個(gè)jdbc request名為”參數(shù)4“,添加一個(gè)”Debug Sampler“用來(lái)查看輸出的結(jié)果,設(shè)置 variables name 為 column1,column2,column3:

2、執(zhí)行結(jié)果:

解析:column1 代表第一列所有的數(shù)據(jù),column1_#可以獲取到第一列的行數(shù) column1_n:獲得第一列第 n 行的數(shù)據(jù)。 column2 和 column3 的功能類(lèi)似, 假如我們只需要第一列和第三列的數(shù)據(jù),可以寫(xiě)成 column1,column3,中間的","不可以省略。
六、Result variable name 參數(shù)使用方法:
如果給這個(gè)參數(shù)設(shè)置值,它會(huì)創(chuàng)建一個(gè)對(duì)象變量,保存所有返回的結(jié)果,獲取具體值的方法:columnValue = vars.getObject(“resultObject”).get(0).get(“Column Name”)

執(zhí)行結(jié)果:

到此這篇關(guān)于python軟件測(cè)試Jmeter性能測(cè)試JDBC Request(結(jié)合數(shù)據(jù)庫(kù))的使用詳解的文章就介紹到這了,更多相關(guān)python Jmeter性能測(cè)試 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python 如何用 Hypothesis 來(lái)自動(dòng)化單元測(cè)試
- Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù)
- python?playwright?庫(kù)上傳和下載操作(自動(dòng)化測(cè)試?playwright)
- Python測(cè)試框架pytest核心庫(kù)pluggy詳解
- python利用faker庫(kù)批量生成測(cè)試數(shù)據(jù)
- 基于python locust庫(kù)實(shí)現(xiàn)性能測(cè)試
- Python接口測(cè)試數(shù)據(jù)庫(kù)封裝實(shí)現(xiàn)原理
- python Hypothesis生成和執(zhí)行大量的測(cè)試用例
相關(guān)文章
matplotlib交互式數(shù)據(jù)光標(biāo)mpldatacursor的實(shí)現(xiàn)
這篇文章主要介紹了matplotlib交互式數(shù)據(jù)光標(biāo)mpldatacursor的實(shí)現(xiàn) ,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
基于python中pygame模塊的Linux下安裝過(guò)程(詳解)
下面小編就為大家?guī)?lái)一篇基于python中pygame模塊的Linux下安裝過(guò)程(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Python將文件映射到內(nèi)存使用mmap.mmap()函數(shù)方式
這篇文章主要介紹了Python將文件映射到內(nèi)存使用mmap.mmap()函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
python 使用事件對(duì)象asyncio.Event來(lái)同步協(xié)程的操作
這篇文章主要介紹了python 使用事件對(duì)象asyncio.Event來(lái)同步協(xié)程的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
PyQt中使用QtSql連接MySql數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了PyQt中使用QtSql連接MySql數(shù)據(jù)庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Python基于pip實(shí)現(xiàn)離線打包過(guò)程詳解
這篇文章主要介紹了Python基于pip實(shí)現(xiàn)離線打包過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Python進(jìn)階_關(guān)于命名空間與作用域(詳解)
下面小編就為大家?guī)?lái)一篇Python進(jìn)階_關(guān)于命名空間與作用域(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05

