Jmeter中关联的使用

JMeter关联技术实战

关联是Jmeter工具中非常重要的一个技术。因为在测试过程过有些数据是经常发生变化的,要获取并使用这些数据,就要使用关联。
比如: 用户登录后,session信息都不同,有些操作要使用session,就需要将这个动态的信息保存下来。
还有经常遇到的场景,第二个请求提交的参数要从第一个请求的返回数据中获取。

今天要测试是获取某一个城市的天气信息:
http://www.weather.com.cn/data/cityinfo/101010100.html

但这里面有一个城市代码(101010100)不是固定的,要根据测试数据获取不同城市的代码编号,再查询该城市的天气状况。
分析后得出的结论是先要请求一个可以获取城市代码的接口,将获取的代码传递给这个获取天气信息的地址,请求形式为http://www.weather.com.cn/data/cityinfo/ citycode.html, {citycode}就是前一个请求传过来的值。

Step1:
添加一个用户变量city。
这里写图片描述
为TestPlan添加一个线程组。添加第一个HTTP Sampler, 命名为GetCityCode。
添加HTTP信息头管理器,再填写请求信息。
这里写图片描述

这里写图片描述

Step2:
添加一个后置处理器,利用正则提取器将获取到的城市代码取出。
这里写图片描述

Step3:
为该请求添加一个BeanShell断言,验证获取的信息是否正确。
这里写图片描述
关于BeanShell会另有篇幅介绍。
在这其中的FailureMessage就是指,如果断言失败,就是提示该信息。

Step4:
添加断言监听器和结果树。

发送请求后,查看断言和结果树。
这里写图片描述

这里写图片描述

会发现断言失败,使用获取的城市代码和期望的不一致,刚才在FailureMessage中指定的信息就会出现。
因为断言失败了,所以结果树显示为红色。

这里是故意将期望的城市代码写错的。现在在BeanShell断言中修改过来。
这里写图片描述
现在断言成功啦。

Step5:
添加第二个HTTP Sampler,命名为GetWeatherInfo。请求信息如下。
这里写图片描述
在路径中要使用第一个请求返回来的城市代码来提起具体的值。/data/cityinfo/${citycode}.html,要与Step2中正则提取器中的引用名称一致。

Step6:

再添加一个BeanShell断言,来验证结果。
这里写图片描述

查看结果树,显示请求返回的响应数据正确。
这里写图片描述

JMeter 中,接口关联是确保多个接口之间数据传递和业务逻辑连贯性的重要操作。以下是几种常见的接口关联方法及使用指南: ### JSON 提取器 JSON 提取器适用于处理 JSON 格式的响应数据。使用时,在需要提取数据的请求后添加 JSON 提取器元件。在 JSON 提取器中,设置要提取的 JSON 路径表达式,JMeter 会根据该表达式从响应的 JSON 数据中提取所需的值,并将其存储为变量,供后续接口使用。例如,若响应的 JSON 数据为 `{"user": {"name": "John", "id": 123}}`,要提取用户 ID,可以设置 JSON 路径为 `$.user.id`,提取到的值会被存储在指定的变量名中,后续接口就可以通过该变量名引用该值 [^1]。 ### 正则表达式提取器 正则表达式提取器可用于从各种文本格式的响应数据中提取所需信息。以匹配 Web 页面中 `name = “file” value = “readme.txt”>` 并提取 `readme.txt` 为例,合适的正则表达式为 `name = “file” value = “(.+?)”>`。其中,`()` 封装了待返回的匹配字符串,`.` 匹配任何单个字符,`+` 表示一次或多次,`?` 表示不要太贪婪,在找到第一个匹配项后停止。使用时,在请求后添加正则表达式提取器,设置好正则表达式、模板、匹配数字等参数,提取到的值会被存储为变量供后续接口使用 [^1][^4]。 ### 用户自定义变量 可以使用用户自定义变量进行接口关联。在测试计划或线程组中添加用户定义的变量元件,定义所需的变量名和初始值。在后续的接口请求中,可以通过 `${变量名}` 的方式引用这些变量。例如,若定义了变量 `token`,在请求的参数中可以使用 `${token}` 来传递该变量的值 [^1]。 ### 提取器与系统变量的使用 在接口 A 的响应数据中获取想要的值存成变量,以变量的形式传给其他接口使用。此过程需注意两个要点:一是使用提取器从响应数据中提取想要的数据并保存成变量;二是由于提取器提取保存的数据只能在线程组内使用,若要跨线程组使用,需将其存入环境变量中 [^3]。 ### 接口关联的一般使用指南 1. **确定关联需求**:明确哪些接口之间需要进行数据传递,以及需要传递的数据是什么。 2. **选择合适的提取器**:根据响应数据的格式(如 JSON、文本等)选择合适的提取器,如 JSON 提取器或正则表达式提取器。 3. **配置提取器**:在提取器中设置正确的提取规则,如 JSON 路径表达式或正则表达式。 4. **使用提取的变量**:在后续接口的请求参数、请求头或其他需要的地方,使用 `${变量名}` 的方式引用提取到的变量。 ```python # 这里只是示例代码,展示如何在 JMeter 脚本中使用变量(非实际可运行的 Python 代码) # 假设在前面的请求中使用 JSON 提取器提取了 user_id 变量 # 在后续请求的参数中使用该变量 request_params = { "user_id": "${user_id}", "other_param": "value" } ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值