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件事。

浙公网安备 33010602011771号