日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Jmeter将JDBC Request查询结果作为下一个接口参数方法

發(fā)布時(shí)間:2024/10/12 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jmeter将JDBC Request查询结果作为下一个接口参数方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

現(xiàn)在有一個(gè)需求,從數(shù)據(jù)庫(kù)tieba_info表查出rank小于某個(gè)值的username和count(*),然后把所有查出來(lái)的username和count(*)作為參數(shù)值,用于下一個(gè)接口。

tieba_info表結(jié)構(gòu)如下圖

?

分析:

1.要查出username和count(*),那么首先就要有1個(gè)或者2個(gè) jdbc request,連接本地?cái)?shù)據(jù)看,分別查詢(xún)出我們需要的username和count(*);

2.rank小于某個(gè)值,這個(gè)值我們可以做一個(gè)變量,方便管理。不管這個(gè)值是多少,我們查出來(lái)的count(*)將只有一個(gè)值,而username會(huì)有很多個(gè),具體多少根據(jù)我們的條件rank來(lái)變化;

3.查詢(xún)出所有username后,我怎么取到每一個(gè)username的值?

4.又怎么把我們查出來(lái)的每一個(gè)username作為參數(shù)值去請(qǐng)求下一個(gè)接口?這里先說(shuō)下,需要做一個(gè)循環(huán)。

5.我事先并不知道能查出多少條數(shù)據(jù),那如何知道我們需要循環(huán)多少次?

?

接下來(lái)逐一解決我們的問(wèn)題。

?

實(shí)踐:

1.首先添加一個(gè)jdbc connection configuration,這里的配置方法可以百度,我連接的是我本地的mysql數(shù)據(jù)庫(kù)

?

2.添加1個(gè)或者2個(gè) jdbc request,分別查詢(xún)username和 count(*),我這里是用了兩個(gè)

?

3.可以看到,在username這個(gè)請(qǐng)求中,select語(yǔ)句中出現(xiàn)了變量rank,那我們可以添加一個(gè)【用戶(hù)定義的變量】,名稱(chēng)就是我們的sql語(yǔ)句里面的變量引用名rank,值就根據(jù)需要自己填

?

4.sql語(yǔ)句寫(xiě)完了,就要提取我們需要的結(jié)果了

這個(gè)時(shí)候可以添加查看結(jié)果樹(shù),看看我們獲取到的count(*)和username

?

count查出來(lái)的數(shù)據(jù)如下圖:

?

username查詢(xún)出來(lái)的數(shù)據(jù)如下

那我們需要的就是這個(gè)count(*)就是20,和20個(gè)username的值

?

?

5.上面我們只是查出來(lái)數(shù)據(jù),接下來(lái)我們就要提取username和count(*)數(shù)據(jù),再回到我們的count和username jdbc request

?

在username這個(gè)request里面,下方的 variable name這里填上你想使用的變量名,也就是之后的接口中要用到的,我取的username,同理,count的request里也做相同操作,可以取為count

?

?

6.現(xiàn)在我們要測(cè)試我們的參數(shù)化到底成功沒(méi)有,我模擬請(qǐng)求接口localhost:3306/test,然后參數(shù)傳count和username,參數(shù)值就是我們獲取的username和count(*)

?

查看下請(qǐng)求結(jié)果

我發(fā)現(xiàn)請(qǐng)求里面 username和count參數(shù)化并沒(méi)有成功,那為什么會(huì)不成功呢,經(jīng)過(guò)一番搜索,原來(lái)當(dāng)使用jdbc request的結(jié)果作為參數(shù)時(shí),要寫(xiě)成${username_1}這樣子,1代表你查出來(lái)的數(shù)據(jù)第一行,想取第幾行就把1改成幾。那問(wèn)題來(lái)了,我們查出來(lái)count(*)是肯定只有一條數(shù)據(jù),那我們可以確定寫(xiě)成${count_1},但是username卻有很多條,我是想所有的username都請(qǐng)求一次,也就是說(shuō)如果是username這個(gè)變量的話(huà),1這個(gè)數(shù)字應(yīng)該是要不斷變化的而不是某個(gè)固定的值,那怎么才能讓他不斷變化呢

?

7.計(jì)數(shù)器

對(duì),就是計(jì)數(shù)器

我們添加一個(gè)計(jì)數(shù)器

由于我們從第一行開(kāi)始取值,所以啟動(dòng)填1,每次我們多1,所以遞增也填1,最大值可不填,number format就是數(shù)字格式,如果填000,取值是12,那最后會(huì)顯示為012,而我們只需要本身的數(shù)字,所以就填0,引用名稱(chēng)就是后面需要用的變量名

?

8.有了計(jì)數(shù)器,能遞增了,那我們就能把username傳進(jìn)去了。我們上面說(shuō)了${username_1}是取第一行,${username_2}是取第二行,依次類(lèi)推,那我們要從1開(kāi)始取,一直到最后。上一步添加的計(jì)數(shù)器就起作用了,我們?cè)O(shè)置的計(jì)數(shù)器是從1開(kāi)始計(jì)數(shù),每次遞增1,那么跟我們想要的完全吻合,index就是我們?cè)O(shè)置的計(jì)數(shù)器的變量名,可以直接用他來(lái)代替我們的數(shù)字1,2,3,4等等,那我們現(xiàn)在來(lái)把username和index兩個(gè)變量拼接起來(lái),這里如果你直接寫(xiě)成?${username_index}或者?${username_${index}}都是不行的,因?yàn)閮蓚€(gè)變量不能直接拼接,需要用到一個(gè)函數(shù) __V,不了解這個(gè)函數(shù)的可以百度看看,作用就是可以使2個(gè)變量可以拼在一起,所以我們拼接后的username變量應(yīng)該是${__V(username_${index})}

?

現(xiàn)在再來(lái)看看 我們請(qǐng)求接口有沒(méi)有把所有的username傳進(jìn)去

?

結(jié)果發(fā)現(xiàn),為啥還是只請(qǐng)求了一次,明明count(*)查出來(lái)是20,那應(yīng)該請(qǐng)求20次啊,為啥只把第一個(gè)username傳進(jìn)去了呢?

?

9.這是因?yàn)?#xff0c;我們傳的username參數(shù)相當(dāng)于做了參數(shù)化,有多個(gè)值,這時(shí)候就需要在設(shè)置線(xiàn)程數(shù)或者添加一個(gè)循環(huán)控制器,但是我們并不知道到底需要循環(huán)多少次或者需要設(shè)置多少線(xiàn)程數(shù),才能讓username剛好傳完,這個(gè)時(shí)候,我們之前查詢(xún)的count就起作用了,count變量是我們之前查出來(lái)的所有數(shù)據(jù)的總數(shù),這個(gè)總數(shù)是多少就說(shuō)明我們需要多少線(xiàn)程或多少次循環(huán)。ok,那我們?cè)趆ttp 請(qǐng)求上右擊,點(diǎn)擊插入上級(jí)--邏輯控制器--循環(huán)控制器,循環(huán)次數(shù),我們使用count變量,即${count_1},這樣就能把次數(shù)確定。這里其實(shí)不能用添加線(xiàn)程的方式來(lái)做,因?yàn)閏ount 和 username兩個(gè)jdbc request都在這個(gè)線(xiàn)程里,如果設(shè)置多線(xiàn)程,這兩個(gè)也會(huì)多次請(qǐng)求,不合理,所以我們選擇更好的循環(huán)控制器

?

10.所有的東西都設(shè)置完了,就需要把我們的東西進(jìn)行重新排序歸類(lèi)

我們首先是有jdbc connection config,然后有count和username兩個(gè)jdbc request,然后我們有一個(gè)測(cè)試的http請(qǐng)求,一個(gè)計(jì)數(shù)器和一個(gè)循環(huán)控制器,那么這時(shí)候就需要把計(jì)數(shù)器和http請(qǐng)求全部移入循環(huán)控制器了,否則還是無(wú)法傳入全部username值

最后的效果如圖,rank變量值是20,剛好20個(gè)http請(qǐng)求,每個(gè)請(qǐng)求的username都不同

?

轉(zhuǎn)載于:https://www.cnblogs.com/zgq123456/p/9811781.html

與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Jmeter将JDBC Request查询结果作为下一个接口参数方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。