文章目录
- 一、跨线程组关联
- 1.1 说明
- 1.2 实现原理
- 二、Jmeter属性的配置方法
- 三、场景
- 四、操作方法
一、跨线程组关联
当有依赖关系的两个请求(一个请求的入参是另一个请求返回的数据) , 放入到不同的线程组中时, 就不能使用提取器保存的变量来传递参数值, 而是要使用Jmeter属性来传递。
1.1 说明
- 在jmeter中,线程组内定义的变量,默认不能跨线程组使用
- 在jmeter中,没有所谓的全局变量、环境变量
1.2 实现原理
1、将线程组1内的变量,当成属性设置到 jmeter配置文件(jmeter.properties)
使用函数 __setProperty2、线程组2,从jmeter配置文件(jmeter.properties)读取属性
使用函数 __property二、Jmeter属性的配置方法
函数实现: 1. __setProperty函数:将值保存成jmeter属性 2. __property函数:在其他线程组中使用property函数读取属性 备注: setProperty函数需要通过BeanShell取样器来执行(BeanShell取样器作用:执行函数和java脚本)三、场景
需求:请求获取天气的接口 ,获取 城市名称 作为 百度 请求参数。
线程组1——天气的接口 https://www.weather.com.cn/data/sk/101010100.html 线程组2——请求:https://www.baidu.com/s?wd=北京,把获取到的城市名称作为请求参数{"weatherinfo":{"isRadar":"1","rain":"0","temp":"18","city":"北京","WSE":"1","qy":"1011","njd":"暂无实况","cityid":"101010100","WD":"东南风","SD":"17%","Radar":"JC_RADAR_AZ9010_JB","time":"17:05","WS":"1级"}}四、操作方法
1、创建线程组1,发送请求,获取城市名。并使用json提取器,去提取城市名,保存到city变量中。
2、创建线程组2,发送请求,使用城市名进行百度搜索。
3、借助函数助手,使用 __setProperty函数,生成 设置属性的代码
4、将生成的代码,写入“BeanShell后置处理程序” 中(http请求—>后置处理器—>BeanShell后置处理程序)
5、添加“调制取样器”,修改“JMeter属性=True”。查看结果树
6、借助函数助手,使用__property函数,生成 获取属性的代码。
7、将代码写入到 百度http请求的参数中。