1. 程式人生 > >Jmeter 跨線程組傳遞參數 之兩種方法

Jmeter 跨線程組傳遞參數 之兩種方法

可能 spa 添加 all post edi 變量 sign 一個

終於搞定了Jmeter跨線程組之間傳遞參數,這樣就不用每次發送請求B之前,都需要同時發送一下登錄接口(因為同一個線程組下的請求是同時發送的),只需要發送一次登錄請求,請求B直接用登錄請求的參數即可,直到登錄接口的參數失效了,需再次發送一次登錄接口,又可以多次使用其參數,下面舉例子:

1.登錄接口中利用 Json Path Extractor 獲取到登錄接口的響應參數,(怎麽獲取上一節講過)

終於搞定了Jmeter跨線程組之間傳遞參數,這樣就不用每次發送請求B之前,都需要同時發送一下登錄接口(因為同一個線程組下的請求是同時發送的),只需要發送一次登錄請求,請求B直接用登錄請求的參數即可,直到登錄接口的參數失效了,需再次發送一次登錄接口,又可以多次使用其參數,下面舉例子:

1.登錄接口中利用 Json Path Extractor 獲取到登錄接口的響應參數,(怎麽獲取上一節講過)

技術分享

響應結果是如下

技術分享


2.在登錄接口下添加 BeanShell PostProcessor ,並寫入腳本如下:

技術分享

3.在接口B下添加BeanShell PreProcessor,並編寫腳本

技術分享

4.在需要用到登錄接口參數的地方,${ } 引用變量即可

技術分享

以上用Json Path Extractor 的地方均可以用正則表達式來完成,由於本人對於正則表達式理解起來實在有點費勁,所以就在jmeter下安裝的插件

來源: http://write.blog.csdn.net/postedit/72873181

方法二:

1.登錄接口中利用 Json Path Extractor 獲取到登錄接口的響應參數,(怎麽獲取上一節講過)

2.在登錄接口下添加 BeanShell PostProcessor ,並寫入腳本如下:

String X-Timestamp=bsh.args[0];

print (X-Timestamp);

${__setProperty(newstamp,${X-Timestamp},)};

String X-Signature=bsh.args[1];

print (X-Signature);

${__setProperty(newsig,${X-Signature},)};

String X-Nonce=bsh.args[2];

print (X-Nonce);

${__setProperty(newnonce,${X-Nonce},)};

技術分享

此種是設置全局變量的形式 3.在接口B中直接引用全局變量即可 ${__P(newstamp,)} 技術分享 如此,接口B即可能獲取到跨線程組登錄接口的響應參數 ========================================== 對比以上兩種跨線程組傳遞參數的方法方法二更方便些,設置為全局變量後,其他只要用到登錄接口參數的線程組,均可以直接引用,無需像方法一 一樣添加Beanshell PreProcessor

響應結果是如下 技術分享

2.在登錄接口下添加 BeanShell PostProcessor ,並寫入腳本如下:

技術分享

3.在接口B下添加BeanShell PreProcessor,並編寫腳本

技術分享

4.在需要用到登錄接口參數的地方,${ } 引用變量即可

技術分享

以上用Json Path Extractor 的地方均可以用正則表達式來完成,由於本人對於正則表達式理解起來實在有點費勁,所以就在jmeter下安裝的插件

來源: http://write.blog.csdn.net/postedit/72873181

方法二:

1.登錄接口中利用 Json Path Extractor 獲取到登錄接口的響應參數,(怎麽獲取上一節講過)

2.在登錄接口下添加 BeanShell PostProcessor ,並寫入腳本如下:

String X-Timestamp=bsh.args[0];

print (X-Timestamp);

${__setProperty(newstamp,${X-Timestamp},)};

String X-Signature=bsh.args[1];

print (X-Signature);

${__setProperty(newsig,${X-Signature},)};

String X-Nonce=bsh.args[2];

print (X-Nonce);

${__setProperty(newnonce,${X-Nonce},)};

技術分享

此種是設置全局變量的形式 3.在接口B中直接引用全局變量即可 ${__P(newstamp,)} 技術分享 如此,接口B即可能獲取到跨線程組登錄接口的響應參數 ========================================== 對比以上兩種跨線程組傳遞參數的方法方法二更方便些,設置為全局變量後,其他只要用到登錄接口參數的線程組,均可以直接引用,無需像方法一 一樣添加Beanshell PreProcessor

Jmeter 跨線程組傳遞參數 之兩種方法