文档章节

jmeter beanshell postprocessor跨线程全局变量使用

o
 osc_pn11u1x9
发布于 2018/08/06 13:45
字数 595
阅读 11
收藏 0

精选30+云产品,助力企业轻松上云!>>>

最近开始使用jmeter做接口测试,遇到的主要问题在这里记录一下。

测试场景:

线程组1-登录-P1接口用例

线程组2-登录-P2接口用例

如果线程组1和2用同一个用户登录,线程组2用例执行会提示用户登录超时相关信息,这个时候就要考虑线程组1中的参数codeKey和loginCode能在线程组2中使用就解决问题了,另外一种没办法的办法就是用2个账号登陆,这样设置的全局变量数据不能共用了,也很麻烦。

1.线程组1中的参数保存到文件中,线程组2通过读取文件中的数据实现数据共享

线程组1登录用例添加后置处理器beanshell postprocessor。脚本内容如下:

String filePath = System.getProperty("user.dir") + "\\loginMsg.txt";
vars.put("filePath",filePath);
File file = new File(filePath);

try {
    if (file.exists()){
        file.delete();
    }
    file.createNewFile();
    FileWriter fs = new FileWriter(filePath,true);
    BufferedWriter bw = new BufferedWriter(fs);
    bw.write(vars.get("codeKey")+"?");

    bw.write(vars.get("loginCode"));
    bw.write(System.getProperty("line.separator"));
    fs.flush();
    bw.close();
    fs.close();
    
    
}catch(IOException e) {
    e.printStackTrace();
}
View Code

线程组2中通过csv数据文件设置读取文件中的数据,这个也可以实现,但个人觉得没必要这么麻烦。

2.通过函数助手__setProperty和后置处理器beanshell postprocessor实现跨线程参数共享

登录参数codeKey和loginCode

就是把通过正则获取到的${codeKey}值设置为全局变量,并以新的名字newcodeKey来引用

在登录请求添加后置处理器beanshell postprocessor

这样codeKey和loginCode就已经设置为全局变量了。发现用setProperty log中会报错显示变量未定义:ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``${codeKey}; ${loginCode}  : Attempt to access property on undefined variable or class name
WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``${codeKey}; ${loginCode}  : Attempt to access property on undefined variable or class name

使用vars和props定义beanshell变量没问题,具体什么原因导致的,还不太清楚,有时间再研究一下。

props.put("newCodeKey",vars.get("CodeKey"));
props.put("newLoginCode",vars.get("LoginCode"));

线程组2中使用__P函数来调用以上参数:

这样就实现了多线程组共用同一账号登陆的场景。

避免线程组间用例执行顺序杂乱无章,在测试计划中勾选“独立运行每个线程组”:

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

unity列表控件Horizontal/Vertical/Grid Layout Group用法介绍

1. Grid Layout Group 为Panel控件添加Grid Layout Group,子控件为四个按钮,分别为Grid,Calendar,Gear,User: 默认属性为 为方便演示,按钮的底色为控件自带image,按钮上面的图标为其子...

路过暴风
18分钟前
19
0
Distinct()与lambda? - Distinct() with lambda?

问题: Right, so I have an enumerable and wish to get distinct values from it. 是的,所以我有一个可枚举的,并希望从中获得不同的值。 Using System.Linq , there's of course an ext......

法国红酒甜
23分钟前
8
0
学习编写编译器[关闭] - Learning to write a compiler [closed]

问题: Preferred languages : C/C++, Java, and Ruby. 首选语言 :C / C ++,Java和Ruby。 I am looking for some helpful books/tutorials on how to write your own compiler simply for......

技术盛宴
53分钟前
17
0
OSChina 周一乱弹 —— 毛巾又怎么样?!我在乎的是大姐姐温柔的怀抱!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《雨 因你而下,于你而止》- Seto 手机党少年们想听歌,请使劲儿戳(这里) @Dan...

小小编辑
今天
41
1
MySQL 常用操作

1 创建/打开/删除数据库 create database db;create database db character set utf8mb4;use db;drop database db;alter database db character set utf8mb4; 2 修复表 mysqlcheck --a......

氷泠
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部