JMETER 執行緒之間傳遞變數

2021-09-14 00:05:25 字數 2049 閱讀 1760

首先我們不能把登入模組和交易的資訊寫在乙個執行緒組裡面,僅一次控制器,這個配件只是在乙個執行緒裡面生效;

我們併發10個執行緒,迴圈5次,那麼就代表需要登入10次,和迴圈次數無關,但是這樣就達不到我們只登入一次的目的,那麼我們需要另闢思路,把登入模組放到乙個執行緒組裡面,然後把獲取登入的 token 放置到乙個共享變數裡面,再把其他模組放到業務的執行緒組裡面,需要token 的地方可以引用共享變數;

在該請求下,新增beanshell postprocessor外掛程式,使用__setproperty函式,將之前的變數轉換成全域性變數

看一下截圖,設定共享變數:katex parse error: expected group after '_' at position 2: }函式:$

其他例子說明,更有助於理解:

例子一:

1、獲取返回結果中的值,設定為變數

2、在該請求下,新增beanshell postprocessor外掛程式,使用__setproperty函式,將之前的變數轉換成全域性變數

3、在另乙個執行緒組中引用該變數。使用$}函式

4、這種引用關係存在執行的先後順序,需要在測試計畫中設定執行完乙個之後,再執行另乙個

例子二及詳細說明:

但是有時為了方便管理,我們可能是把各個介面單獨存放在不同的執行緒組中。拿token來說,雖然每乙個執行緒組中我們也可以在放乙個登入請求,然後輸出乙個token供此執行緒組使用,但這樣就比較繁瑣且冗餘。此時我們就可以使用跨執行緒組傳遞引數來解決這樣的問題

方法:jmeter本身的內建函式中,「__setproperty」函式可以把某引數的值設定成jmeter本身的內建屬性,而jmeter的內建屬性是所有執行緒組都可以呼叫的,是全域性變數。各個執行緒組呼叫時,只需使用呼叫jmeter屬性的函式「__p」來呼叫相應的屬性即可。

操作:以token來示例,在登入請求中新增乙個正規表示式提取器(上一章有說),提取響應值中的token的值。然後再新增乙個 bean shell postprocessor 的後置處理器,在這個處理器中呼叫「__setproperty」函式,設定正則提取到的token的值為全域性變數。然後在另外乙個執行緒組中新增乙個其他需要用到此token的請求,通過函式「__p」來呼叫token。

流程:1.新增bean shell postprocessor後置處理器

2. bean shell postprocessor操作面板

parametres:把需要操作的引數傳遞給bean shell postprocessor。前面提取出來的token的值,就把引數token寫入

script: string token=bsh.args[0]; 把bean shell postprocessor接收到的引數值,賦值給某引數。0是第乙個值。

$,)};        呼叫函式__setproperty,把bean shell postprocessor中的引數token的值賦值給requesttoken,並設定requesttoken為jmeter內建屬性。

3. 其他執行緒組呼叫token的值

python傳遞變數 python變數傳遞

python變數傳遞 數值 num 1 123 num 2 num 1 改變num 2值前 print num 1 num 2 format num 1,num 2 num 2 0 改變num 2值後 print num 1 num 2 format num 1,num 2 輸出num 1 123,...

Qt多執行緒間傳遞變數方法總結

參考 qt執行緒間共享資料主要有兩種方式 一是使用共享記憶體。即使用乙個兩個執行緒都能夠共享的變數 如全域性變數 這樣兩個執行緒都能夠訪問和修改該變數,從而達到共享資料的目的 二是使用singal slot機制,把資料從乙個執行緒傳遞到另外乙個執行緒。textdevice.h ifndef text...

Air傳遞變數值

不用多說,附上 twmodule main xmlns s library xmlns mx library xmlns local import mx.controls.alert bindable public var string string protected function butto...