zoukankan      html  css  js  c++  java
  • jmeter如何设置全局变量以及调用方法

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

    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!!!

    谢楼主帖子!

  • 相关阅读:
    2.socket编程
    1网络编程基础概念
    vim笔记
    mysql示例及练习2
    mysql的示例及练习
    自己封装的mysql应用类示例
    mysql3_pymysql
    mysql2
    mysql1
    python之列表与集合
  • 原文地址:https://www.cnblogs.com/a00ium/p/10360494.html
Copyright © 2011-2022 走看看