(Jmeter)Cookie,跨线程组接口调用
构成:线程组A
----- 登录请求
线程组B
----- 新建请求
系统:登录生成cookie 和 token。 后面所有的请求在 cookie 的情况下,传递 token 来请求数据。
实现:
1. 测试计划:配置环境变量,供后面所有接口调用
2. 线程组A, 新建登录接口,再给登录接口下 添加:
“查看结果树”,
"JSON提取器“(自定义成了 token 提取器),
"正则表达式提取器“(自定义成了cookie正则表达式提取器),
BeanShell断言
3. 运行 登录接口
4. 查看登录的查看树, token 在 Repsonse Body的 msg,JSESSIONID 在 Response headers 的 JSESSIONID
5. 提取 token 和 JSESSIONID,利用 JSON提取器 和 正则表达式。提取后,形成变量 token 和 JSESSIONID
注意:
1)token 和 JSESSIONID 的表达式,需要根据 登录生成的具体字符串来提取。
2)JSESSIONID 因为是在 登录接口的 Response Header里面,所以提取 JSESSIONID 时选择的时,Main sample 和 Header
6. 变量 token 和 JSESSIONID 目前仅在一个线程组内可以调用。跨线程组的调用,需要将其设置成全局变量,可以使用 BeanShell断言 来实现。
7. 新建另外一个线程组,新建功能,并添加:
HTTP 请求:新建功能
HTTP Cookie Manager:加载前面设置的 Cookie
查看结果树:查看结果
8. 配置
${__P(JSESSIONID)}:从全局变量中获取 JSESSIONID;
域:一定要配置!!!,即当前请求的域名或IP
9. 运行新建的HTTP请求,查看结果树
如果 请求里面的 Requst Body or Request Headers 里面,包含了所需要的 token 和 JSESSIONID,那么基本就没什么问题。