jmeter使用beanshell中字符串转换为long的实际操作

今天使用beanshell做断言时,想要把返回体中的时间戳字符串转换为long类型,然后和当前时间做比较,刚开始看网上写的使用常规的Long.parseLong()进行转换
parseLong(String str)方法用于返回与给定String表示形式相对应的long值,换句话说,我们可以说此方法用于将字符串值转换为long值。
果断使用了此方法,结果一直报错:
JMeterException: Error invoking bsh method: eval In file: inline evaluation of: ``Long test2 =Long.p
Error invoking bsh method: eval
一直以为是beanshell不支持Long的调用,和普通的java运行环境不一样,然后就开始换方法,替换成了Long.valueOf(string)
代码格式内容如下:

//long test2 =Long.parseLong(vars.get(“TESTSTART.MS”));
//long test1 = Long.parseLong(vars.get(“alarmTime_1”));
long test2 =Long.valueOf(vars.get(“TESTSTART.MS”));//获取脚本启动的系统时间,jmeter自带的变量
long test1 = Long.valueOf(vars.get(“alarmTime_1”));
log.info(“test2---->”+vars.get(“TESTSTART.MS”));
log.info(“test1---->”+vars.get(“alarmTime_1”));
if(test1 < test2 && “${alarmTime_matchNr}” == “10”){
Failure = false;
}else{
Failure = true;
FailureMessage = “接口获取的报警时间时间值比当前时间还大,参数不合理”
}

结果还是执行不成功,最后仔细阅读代码,才发现是代码12行少了一个分号,为了这个分号折腾了两小时(主要是最近这段时间写Python代码习惯了不搞分号,呜呜呜呜~~~~)
总结
1、beashell中执行的代码和java普通的运行环境没有大的区别,只是beashell中不支持java的泛型(最常见的就是ArrayList,需要单独导入包才能使用)
2、还有log.info()内部不能包含非String 以外的变量,就是基础的类型int变量都不支持打印出来,所有非String类型的变量都需要转换为String才能正常调用log.info()函数
log.info函数打印其他类型变量的实际效果

3、Long.parseLong()和Long.valueOf()没有什么大的区别,都可以把没有超过长度限制的字符串转换为long类型,变量操作后转换为long的对象,与parseLong(String)方法类似,Long.valueOf()还允许减号’-'作为String中的第一个字符。
4、beanshell脚本只要存在一个代码格式错误,无论在整体代码的那个位置,从头到尾所有的代码行都不会执行
5、如果想将beanshell中获取到的变量设置为全局变量,必须重新开启一个Beanshell处理器,如下图,放在同一个beanshell处理器中,将无法设置为全局变量

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值