抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

背景

这篇说一下jmeter的两个线程组之间如何传递变量:例如第一个线程登陆a系统,拿到sid然后第二个线程里的请求将该值作为一个header项。

本篇仅为说明如何应用,实际大多数场景都可以使用仅一次控制器来完成,例如登陆后访问其他接口。

例子

新建测试计划,因为要跨线程,下图勾选 (很多人照着网上教程看怎么传第二个线程都不对,都是因为这里没勾选!)

image.png

新建两个线程组,各有一个http请求

第一个线程组请求下新建正则表达式提取和一个BeanShell后置处理

第二个线程组http请求前加一个http信息头管理器

image.png

登陆请求

image-20210511170752960

正则表达式提取

image.png

BeanShell后置处理器

image.png

线程组2中

http信息头管理器

image.png

http请求随便写

执行查看第二个线程组中的结果树

image.png

可以看到,跨线程组传递f6sid成功。

补充说明

除了使用内置的函数,也可以通过在第一个线程组的BeanShell后置处理器使用 props.put赋值,在第二个线程组BeanShell前置处理器中使用通过props.get取值。

赋值取值上,vars和props非常相似,但是vars仅可用于本线程,而props可以跨线程。

线程组1中BeanShell后置处理器

image.png

线程组2中http请求下新增BeanShell前置处理器

image.png

线程组2中http请求中引用变量

image-20210511170927885

查看线程组2结果树

image-20210511170949598

评论