如何在JMeter中用Loop Controller通过单请求给JPetStore加购多件商品
在JPetStore中用JMeter Loop Controller批量添加商品到购物车的实现方法
核心思路
通过Loop Controller循环执行「搜索商品→提取商品参数→添加到购物车」的流程,结合数据驱动实现多件商品的批量操作,全程复用单个搜索请求模板。
具体步骤
搭建基础测试框架
- 新建测试计划,添加线程组(单线程即可完成批量操作,按需调整)。
- 线程组下添加HTTP Cookie管理器:JPetStore依赖会话维持登录状态,必须启用该组件自动管理Cookie。
- 添加登录HTTP请求:模拟用户登录,请求方式、路径、参数参考实际抓包结果(通常是POST请求,参数包含
username和password)。
配置Loop Controller
- 在登录请求后添加Loop Controller,设置「循环次数」为需要添加的商品总数;如果用CSV数据驱动,也可勾选「永远」,配合CSV的循环策略控制执行次数。
数据驱动准备(多不同商品时使用)
- 在Loop Controller下添加CSV Data Set Config:
- 文件名:指向存储商品搜索关键词/ID的CSV文件(每行一个值,比如
EST-1,EST-2,K9-BD-01)。 - 变量名:自定义变量名,比如
productKey。 - 其他设置:按需勾选「循环读取」「遇到文件结束符再次循环」。
- 文件名:指向存储商品搜索关键词/ID的CSV文件(每行一个值,比如
- 在Loop Controller下添加CSV Data Set Config:
搜索商品请求
- 在Loop Controller内添加HTTP请求,模拟搜索栏操作:
- 请求方法:GET(JPetStore搜索一般为GET请求,以实际抓包为准)。
- 请求路径:
/jpetstore/shop/searchProducts。 - 参数:添加
keyword=${productKey}(固定搜索单个商品时,直接写死关键词即可)。
- 在Loop Controller内添加HTTP请求,模拟搜索栏操作:
提取商品添加参数
- 搜索请求后添加正则表达式提取器(或CSS选择器提取器),从搜索结果页面提取「添加购物车」所需的
itemId:- 引用名称:
itemId。 - 正则表达式:
itemId=(\w+)(匹配链接中的商品ID,需根据实际页面HTML调整,比如链接为/shop/addItemToCart?itemId=EST-1时,该正则可准确提取)。 - 模板:
$1$,匹配数字:1。
- 引用名称:
- 搜索请求后添加正则表达式提取器(或CSS选择器提取器),从搜索结果页面提取「添加购物车」所需的
执行添加购物车操作
- 提取器后添加HTTP请求,模拟点击「Add to Cart」:
- 请求方法:POST(以实际抓包为准)。
- 请求路径:
/jpetstore/shop/addItemToCart。 - 参数:添加
itemId=${itemId}和quantity=1(数量可自定义为变量,比如quantity=${num},需提前配置)。
- 提取器后添加HTTP请求,模拟点击「Add to Cart」:
验证结果
- 在Loop Controller外添加HTTP请求,访问购物车页面(路径一般为
/jpetstore/shop/viewCart)。 - 添加响应断言:检查页面中商品数量、商品ID是否符合预期,确保批量添加成功。
- 在Loop Controller外添加HTTP请求,访问购物车页面(路径一般为
关键注意事项
- 确保Cookie管理器正常工作:如果出现添加失败,检查会话是否维持(查看Cookie管理器的结果树)。
- 提取器规则要准确:如果搜索结果有多个商品,需调整正则/CSS选择器,确保提取目标商品的
itemId(比如定位第一个商品的添加链接)。 - 循环次数与数据匹配:使用CSV时,确保循环次数不超过CSV行数(或开启循环读取),避免空值错误。
内容的提问来源于stack exchange,提问作者Chandrika Anukula
相关产品推荐
相关产品推荐

