本文为原创,码字不易,转载请注明,谢谢!
问题
在用Jmeter做接口测试时,需要传递登用户录后的token——通过请求头部传递,希望在一个线程中,通过动态修改token的值来验证不同的用户下,接口返回的信息是否正确。
前提
- 在setUp Thread Group调用了两次登录接口,分别将user_1和user_2的token保存为全局变量User_1_token和User_2_token(用全局变量为了方便多线程组调用)
- Jmeter版本为3.2
动态传递token
- 新建一个变量user_token,为了方便给了一个默认值1(根据实际来吧,也可以不给) 定义变量
- 创建线程组,添加 HTTP信息头管理器,调用user_token变量
添加HTTP信息头管理器 - 添加要测试的接口(http请求)
- 添加前置处理器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了(不要问我为什么,我也还没搞明白^~~^) ```
- 一个用户的调通了,接下来需要将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请求
- 最后做了下优化,结构如下: image.png
网友评论