美文网首页软件测试职业探索
Jmeter: 参数动态赋值

Jmeter: 参数动态赋值

作者: 喵喵Alin | 来源:发表于2017-12-04 20:05 被阅读105次

本文为原创,码字不易,转载请注明,谢谢!


问题

在用Jmeter做接口测试时,需要传递登用户录后的token——通过请求头部传递,希望在一个线程中,通过动态修改token的值来验证不同的用户下,接口返回的信息是否正确。

前提
  • setUp Thread Group调用了两次登录接口,分别将user_1和user_2的token保存为全局变量User_1_token和User_2_token(用全局变量为了方便多线程组调用)
  • Jmeter版本为3.2
动态传递token
  1. 新建一个变量user_token,为了方便给了一个默认值1(根据实际来吧,也可以不给) 定义变量
  2. 创建线程组,添加 HTTP信息头管理器,调用user_token变量
    添加HTTP信息头管理器
  3. 添加要测试的接口(http请求)
  4. 添加前置处理器Bean Shell PreProcessor,修改user_token的值为已获取的user_1_token
    添加前置处理器
    在这个地方踩了坑,参考了网上的资料,开始是这样写的:
      String token = ${__P(user_1_token,)};
      vars.put("user_token", token);
    结果请求中传的值是我设置的默认值,折腾了好久,把第一行换成 
      String token = bsh.args[0]; 
    就OK了(不要问我为什么,我也还没搞明白^~~^)
      ```
    
  5. 一个用户的调通了,接下来需要将user_token的值修改为user_2_token,再调用测试接口。开始的思路是重复步骤4,将user_1_token改为user_2_token后,请求接口,结构是这样的:
    user_1_token to user_token
    HTTP请求
    user_2_token to user_token
    HTTP请求
    
运行后,发现两次http请求都是调用的user_2_token,显然这不是我想要的。于是想到了if控制器,当user_token==user_1_token时,将user_1_token传给user_token 添加if控制器
  1. 最后做了下优化,结构如下: image.png

相关文章

网友评论

    本文标题:Jmeter: 参数动态赋值

    本文链接:https://www.haomeiwen.com/subject/szmnvxtx.html