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

 

posted on 2020-05-29 14:18  星空6  阅读(4366)  评论(2编辑  收藏  举报

导航