51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 627|回复: 0
打印 上一主题 下一主题

把响应的数据设置成全局变量之jmeter

[复制链接]
  • TA的每日心情
    无聊
    2 小时前
  • 签到天数: 944 天

    连续签到: 3 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2023-1-28 16:04:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    [url=]jmeter[/url]接口测试过程中,经常遇到请求需要用到token或者cookie的时候,可以把返回token或cookie的接口用后置处理器提取出来,但是在这种情况下,只能适用于当前的线程组,其他线程组无法引用到提取的token或cookie的变量值,所以必须要生成全局变量让测试计划下的所有线程组都可以引用变量。
      首先添加一个setUp线程组用来放到所有请求前执行,用于提取需要的cookie值。(以禅道为例)
      禅道中接口访问需要用到zentaosid是在登录的Response headers中,我们需要把zentaosid用后置处理器提取出来赋值给一个变量。

      使用边界值提取器把zentaosid提取出来赋值给变量ckie。
      边界值提取器提取出来无法全局使用,仅作用于当前线程组。

      使用函数助手对话框的setProperty函数,有两个输入框要填写(属性名称和Value of property),属性名称填写一个全局变量名,Value of property填写边界值提取到的zentaosid(边界值提取器提取到的zentaosid赋值给了变量ckie,此处引用变量${ckie}得到zentaosid)。

      在边界值提取器下添加一个后置处理器BeanShell PostProcessor。

      把生成的setProperty函数复制到BeanShell PostProcessor中。此时已经生成把接口需要用到的zentaosid生成了全局变量并赋值给了ztsid。

      引用该全局变量有两种方式
      (1)使用函数助手中的property函数,只填写属性名称对应的输入框:全局变量名ztsid。

      把生成的结果放到需要zentaosid访问的接口的http cookie管理器中。

      (2)使用函数助手中的P函数,只填写属性名称对应的输入框:全局变量名ztsid。

      把生成的结果放到需要zentaosid访问的接口的http cookie管理器中。

      总结:
      ${__setProperty()}与${__property()}/${__P()}一起配合使用,setProptety等于把值拿出来,
      __property/__P 1.可以把setProperty 的值直接拿出来, 2.可以对已存在的变量重新赋值
      __P是__property函数的简化版,用来返回jmeter属性的值,可以在命令行中使用也可以在beanshell中用,
      举个例子:${__P(prop1)}会返回属性prop1的值;${__P(prop1,123)} 会返回属性prop1的值,如果prop1未定义值,则返回123;
      __property和__P之间的区别:用法上__property函数仅仅是比__P函数多了一个可以存值的变量,举个__property用法例子:${__property(pro,var,abcd)}会返回pro的值,如果pro未定义值则会返回abcd,同时会将pro的值存到变量var中。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-8 11:27 , Processed in 0.061075 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表