jmeter跨線程組保持登錄(多線程共享cookie);兩種方式


方式一、使用__setProperty設置全局變量;

1.jmeter中創建一個登錄請求,然后執行,察看結果樹——>Response data中的Response Body 或 Response headers查看返回cookie的相關信息;

 

 2.在登錄的http請求下添加后置處理器--正則表達式提取器,提取headers中的cookie信息;

 

 

 

 3.在登錄http請求下創建一個后置處理器--BeanShell PostProcessor,把提取到的cookie值改成全部變量;

  格式:${__setProperty(轉換成全局變量后的引用名,${正則表達式定義的變量名},)};

 

 4.再添加一個cookie管理器,這個cookie管理器換成全局變量后的cookie引用名;

這個cookie管理器直接在TestPlan下,不屬於任何一個線程組內;

名稱:cookie中的key;

值:引用BeanShell PostProcessor中定義的全局變量名;如,${__setProperty(AJSESSIONID,${JSESSIONID},)};

格式:${__P(全局變量名,)};如,${__P(AJSESSIONID,)}

域:要測試接口的域名或ip;

路徑:填 / 接可以;

 

 5.添加線程組,該線程組內不添加登錄請求,可以操作需要登錄后才能操作的請求;

參考:https://www.jianshu.com/p/83e677efe8c7

 方式二、使用BeanShell PostProcessor保存cookie相關的數據;

2.1 jmeter添加登錄請求,並添加提取器,提取響應中cookie相關的信息;

 

 2.2 添加BeanShellPostProcessor,保存提取的JSESSIONID;

public static void execParam() 
{
String getdata = vars.get("JSESSIONID"); 
String filename = "C:/Users/Administrator/Desktop/test0713/outjs.txt";
FileWriter writer;
        try {
            writer = new FileWriter(filename,true);
            writer.write(getdata);
            writer.write("\r\n");
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
}
execParam();

 

 

  

 2.3 添加一個線程組,添加CSV Data Set Config讀取JSESSIONID參數化的信息;添加HTTP cookie管理器,填寫cookie相關的信息;添加需要登錄后操作的請求;

 

 

 

 2.4 測試計划中設置獨立運行每個線程組;

 2.5 執行測試,查看結果。

  成功。

 

 方式三 ?也可以將登錄和其它請求放在一個線程組下,不過對於壓力測試而言,這樣登錄的請求次數過多;現實生活中,一次登錄,可能會做n件事。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM