方式一、使用__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件事。

