思路:將某一線程組內的變量通過“__setProperty”函數設置成jmeter的全局變量,在另一線程組中通過“__P”函數調用即可。
1.添加-后置處理器-BeanShell PostProcessor
Parametres:把需要操作的參數傳遞給Bean Shell PostProcessor。前面提取出來的cookie的值,就把參數cookie寫入
Script: string cookie=bsh.args[0]; 把Bean Shell PostProcessor接收到的參數值,賦值給某參數。0是第一個值。
${__setProperty(newcookie,${cookie},)}; 調用函數__setProperty,把Bean Shell PostProcessor中的參數cookie的值賦值給newcookie,並設置newcookie為jmeter內置屬性。
2.其他線程組中引用----${__P(newcookie,)}
后記:
(2018-10-09)
這一功能真的很好用,並且我今天在工作中用到了:模擬用戶連續登錄兩次,使用跨線程組的方式,兩個線程組分別依次登錄,由於登錄后的操作要使用登錄時獲得的WorkspaceId,因此,第一次的WorkspaceId用beanshell取到,第二次登錄后也取到WorkspaceId,不做任何操作,只添加一個Debug PostProcessor用於看取的結果。
測試:兩次的WorkspaceId值應該一致,但測試結果為不一致。
分析:開始時我以為是我這個測試小白哪里搞錯了,后來看到腳本思考了一下:
1、WorkspaceId兩次都取到了,沒有報錯,也沒有報錯信息;
2、查看使用WorkspaceId的接口的響應信息,結果是本該顯示的內容為空;
3、分析業務功能,有沒有可能是研發人員改了代碼?詢問過給到的答案是業務功能沒變;
4、查看數據庫,發現該顯示的內容庫中沒有,說明內容沒有生成。
這時候就可以提bug了,后來研發人員看了發現確實是他們的失誤,有兩個jar包沒有替換過去。