zoukankan      html  css  js  c++  java
  • JMeter实现动态关联——两个接口在不同的线程组

    【业务场景】

    用户输入正确的用户名及密码登录系统,若该登录用户存在多个公司则需要选择相应的公司进入系统(若仅有一家公司则直接进入系统),可浏览公司相关产品信息。

    【实现逻辑】

    用户登陆成功后首先会获取一个token值,出于安全机制会同步提供一个access_token。登录时选择公司及进入系统后的操作,如浏览产品会校验token值与access_token值是否正常。

    两者均正常,则可操作成功,但未传token值与access_token值或其失效的话,后续操作失败。

    【两个接口在同一个线程组】

    如果两个接口在同一个线程组中,JMeter实现动态关联比较简单,通过添加Http信息头管理器可以完成。

    如下图所示,登录选择公司时没有传相应token及access_token,导致选择公司接口执行失败,后续产品浏览相关操作也同样失败。

     我们看下HTTP信息头管理器中的内容,通过变量${token}获取登录请求下的token值,通过${token_tpye}${access_token}获取AccessToken请求下对应token类型及access_token值。

     启用HTTP信息头管理器后,再次执行可以正常通过。

    _________________________________________________________________________________分割线_______________________________________________________________________________________________________

    【思考】

    如果登录系统与浏览产品不在一个线程组下,那如何实现参数的动态关联呢?

    今天在学到这块的时候,总结了下大致思路,不足之处希望大家指正。

    【两个接口不在同一个线程组】

    现在登录系统与浏览产品不在同一个线程组下,如果按照之前那种处理方式,添加一个HTTP信息头管理器执行发现仍然报401错误,如图所示。

     【解决思路】

    1.先提取上一个接口中的token与access_token值;

    2.将提取出来的token与access_token设为全局变量;

    3.同时需要用到Beanshell取样器,目的用来执行一段java代码;

    4.这里需要用到函数助手__setProperty将token与access_token设为全局变量,将生成的代码

    ${__setProperty(Token,${token},)}

    ${__setProperty(Token_Type,${token_type},)}

    ${__setProperty(Access_Token,${access_token},)}

     放入Beanshell取样器中;

    5.在下一个接口中通过函数助手__property 生成代码

    ${__property(Token,,)}

    ${__property(Token_Type,,)}

    ${__property(Access_Token,,)}

    6.在下一个接口中,HTTP信息头管理器中通过第5步生成的代码获取响应的token与access_token值。

    【操作步骤】

    1.通过函数助手__setProperty将token,token_type,access_token设置为全局变量,并放入BeanShell取样器中;

    2.通过函数助手__property生成可被调用的Token、Token_Type、Access_Token表达式和对应名称,在下一个接口中,HTTP信息头管理器中调用相应的值。

     至此,接口已经调试通过。

     该文章仅作为个人学习过程的总结,如有理解错误的地方欢迎大家指正,避免误人子弟,哈哈哈。

  • 相关阅读:
    input输入框与元素间有间隙
    显示3行,还要省略号(这个属性比较合适WebKit浏览器或移动端(绝大部分是WebKit内核的)浏览器)
    input file 修改按钮名称
    文本溢出处理
    移动WEB前端开发资源的一些素材
    带弹性的导航栏
    带重力的公告栏
    淘宝放大镜效果
    【规范】javascript 变量命名规则(转)
    常见的仿Flash图片轮播效果
  • 原文地址:https://www.cnblogs.com/mrgavin/p/12762446.html
Copyright © 2011-2022 走看看