码迷,mamicode.com
首页 > 其他好文 > 详细

jmeter如何设置全局变量以及调用方法

时间:2019-02-10 23:11:20      阅读:645      评论:0      收藏:0      [点我收藏+]

标签:hot   pst   auth   一个   https   对象   18C   tip   get   

当遇到如跨线程组调用变量等情况,需要设置全局变量。

1、打开函数助手

技术图片

输入需要的值然后点击生成按钮,或者直接使用${__setProperty(newuserid,${userid},)}的格式

技术图片

设置局部变量userid和token为全局变量并在另一线程中调用,调用方式见下

技术图片

${__property(变量名)}

 

业务场景
一、登录系统后进行商品购买,进行做接口并发。

1、首先分了两个线程组login、pay_buy_finish 如图:

技术图片
 

 

2、获取接口A正则表达式提取的session_sid作为全局变量,login线程只运行1次。如图:

 

技术图片
 

 

3、把获取的sid 作为全局变量传递给线程组pay_buy_finish 中的请求使用:如图:

 

技术图片
 

 

4、运行结果是这样:
线程组login 运行1次

技术图片
 

pay_buy_finish运行5次
4次错误结果:
技术图片
 

 

1次正确结果:

技术图片
 

 

线程组pay_buy_finish总共运行5次,其中4次取值都不正确,只有1次取值正确。 如果有同学知道原因的请留言!

共收到 10 条回复时间 点赞
技术图片

图形界面没关闭过的情况下,上次运行时的__setProperty会一直在,比如设置了属性A=11;下次运行的时候初始A就=11,然后才是被重新赋值,看你的查看结果树是在2个线程组下的,你可以把它拉到外面,看下login、pay_buy_finish的执行顺序,如果是这个原因,可以把login改成setup的

技术图片
Mr.W #2 · 2017年08月15日 作者
对 技术图片北溟 #1 回复

我在nogui 下运行也是如此,貌似和关闭图形界面没关系

技术图片
对 技术图片北溟 #1 回复

正好也解决了我的疑问 十分感谢!

技术图片
对 技术图片Mr.W #2 回复

另外我还有一个问题想要请教:设置全局变量后,在其他线程组中可以使用使用__property获取到该全局变量,可是该全局变量如何在beanshell中使用呢?

技术图片 Mr.W 关闭了讨论 08月15日 12:50
技术图片 Mr.W 重新开启了讨论 08月15日 13:22
技术图片

${__property (x)}也可以直接用在beanShell中的,但是就是简单的替换,我觉得用props.get("x")会更加安全,否则x属性值有特殊字符时,遇到一些逻辑处理可能就会有问题,比如字符串相加等,beanShell窗口最下面有说明的有哪些可以用的内置对象

技术图片
对 技术图片北溟 #7 回复

setup中定义全局变量x,然后在其他线程组中beanshell里直接使用${__property (x)}会报错: Attempt to access property on undefined variable or class name ,使用props.get("x"),提示“ Undefined argument: x”

之前遇到过这个问题,我的解决方式是:在beanshell中设置参数:${__property(x)},然后在beanshell script中使用bsh.args[0]进行获取,可是我不是很喜欢这种方式~~

技术图片

props.get("x") 你这个报错的话Undefined argument: x
检查下是不是没加引号?

技术图片
 

 

技术图片
对 技术图片北溟 #9 回复

哈哈~~果真 tks!!!

技术图片

谢楼主帖子!

jmeter如何设置全局变量以及调用方法

标签:hot   pst   auth   一个   https   对象   18C   tip   get   

原文地址:https://www.cnblogs.com/a00ium/p/10360494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!