默认JMeter设置的变量只能在本线程组内使用,
image.png
如上图,在线程组引用 setup线程组内 设置的token 变量,不能取到。

设置属性

JMeter中有两种类型 变量

  • 属性
  • 变量

区别就是 我们在引用变量 ${}
属性是可以跨线程组的。可以在不同的线程组内获取到。

添加beanshell 后置处理器

登录接口上—【右键】—【添加】—【后置处理器】—【Beanshell后置处理程序】image.png
添加完成之后,在位置的先后顺序上需要注意:
image.png
1 先进行json提取器将token的值提取出来。
2 在使用Beanshell将token值设置为属性

setProperty 函数

打开函数助手,在函数助手中选择【setProperty】
image.png
将生成的代码复制到 beanshell后置处理器中
image.png

  1. ${__setProperty(token_prop,${token},)}

添加调试取样器

image.png将调试取样器添加进来,JMeter属性设置为True
image.png
再次运行。可以在查看结果树中看到设置的属性值。
image.png在调试取样器中可以看到token已经设置为属性了。在线程组就可以引用属性来及进行跨线程组传参.

引用属性

在函数助手中找到P函数,引用属性的名字。
image.png
在请求中引用属性
image.png

  1. ${__P(token_prop,)

再次执行,可以看到已经能够成功从setup线程组中引用token值,实现了跨线程组传参。
image.png

练习

image.png
针对添加收货地址接口进行测试

根据需求梳理测试点

JMeter跨线程组传参 - 图13

根据测试点整理测试数据

测试数据放在csv文件中

cityName userName userPhone

整理测试数据。

  1. cityName,userName,userPhone
  2. shanghai,fahai,13012312389
  3. shanghai,,13012312389
  4. ,fahai,13012312389
  5. huoxing,fahai,13012312389
  6. shanghai,fahai,
  7. shanghai,fahai,130123123888
  8. shanghai,fahai,1301231238
  9. shanghai,fahai,11112312389

创建需求

在请求中添加信息头管理器。
image.png

添加CSV文件配置

将编写的测试数据整理到CSV文件中并上传到CSV文件配置中
image.png
设置完成之后 在jmeter的请求中
image.png
请求体中的数据 引用变量

运行

因为csv文件中有8条数据 所以设置循环次数为8
image.png
点击运行

相关问题

  1. 在JMeter中,csv 参数化 如何做?

测试单接口,需要考虑不同的场景。

  1. 先整理测试点,根据测试点整理测试数据,将数据放在csv文件中
  2. 线程组中新建http请求,以及创建csv文件设置。 csv文件设置中上传文件路径,设置变量名
  3. http请求中引用变量。
  4. 线程组中设置循环次数,有多少条数据就设置循环多少次。

关键词: csv文件配置,循环次数,变量

  1. JMeter中如何进行跨线程组传参?

因为json提取器设置的变量 只能在本线程组内使用,不同跨线程组使用,要想跨线程组使用,

  1. 先将要传递的参数使用json提取器提取出来
  2. 上游接口添加 beanshell 后置处理程序, 使用 __setProperty 函数,将json提取器设置的变量设置为属性
  3. 另外线程组中的请求中通过 P 函数来引用上面设置的属性,实现传参。

关键词, 设置属性, 函数助手, setProperty, P