一、 知识点(以下知识点亲试踩了很多坑):
1、重定向的解决
2、跨线程组传递参数
3、上一个请求成功后,再执行下一个请求
二、解决重定向
解释重定向
表现为响应状态吗是301(永久重定向)或302(临时重定向),在响应头中,会有一个重定向的地址发过来
永久重定向 301:
该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的URI。
也就是说,如果已经把资源对应的 URI 保存为书签了,这时应该按 Location 首部字段提示的 URI 重新保存
临时重定向 302:
临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的URI 访问。
户把 URI 保存成书签,但不会像 301 状态码出现时那样去更新书签,而是仍旧保留返回 302 状态码的页面对应的URI。
第二个请求失败
出错原因,因为重定向,自动发送第二个请求时,jmeter没有带上第一个请求的token
解决方式有两种
第一种:添加配置原件-》http cookie管理器 cookie会自动存储返回的cookie ,并用在重定向请求
http cookie管理器
第二种:添加配置原件-》http信息头管理器,手动添加cookie
二、解决跨线程组参数问题(因为普通的参数传递只能在同一线程组内,无法跨线程组):
1、想解决问题:setup线程中登录产生的token要用到后续请求,但登录只想执行一次
(1) 首页加界值提取器,提取出token
边界值提取器
(2)加beanshell后置处理器,将token设为全局变量,一定要放在该登录请求的下面
beashell后置处理器
${__setProperty(tokenG,${token},)};生成方式如下
工具-》函数助手对话框
注意变量取值方式
全局变量引用方式:${__property(tokenG)}
访问成功
3、上一个请求成功后,再执行下一个请求(即登录成功以后再查询)
(1)前面和上面一样,将登录返回的body用边界值截取关键字,存入全局变量里
如果没有获取到返回零
(2)填加if控制器
${__jexl3("${__property(bodyG)}"!="0",)}
注意:if控制器不可以直接写 判断方式,必须用__exl3函数,且别忘记变量和值都要加双引号
方式也在工具-》函数助手对话框 搜jexl3函数



