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