浅谈前置处理器之正则表达式用户参数
正则表达式用户参数(RegEx User Parameters) 是一种前置处理器(Pre-Processor),它答应用户根据正则表达式从相应数据中提取值后进行应用,并将这些值作为参数传递给后续的HTTP请求或其他需要的地方。此功能对于处理动态内容、会话ID、令牌等具有高度灵活性,是实现自动化测试脚本的关键组成部分。
使用场景
- 动态参数处理:当目的体系在每次请求中天生不同的动态参数(如会话ID、时间戳等),需要提取后续并使用这些参数继续后续请求。
- 测试数据个性化:根据相应内容个性化后续请求的参数,比如从登录相应中提取用户ID用于后续的个人资料查询请求。
- 数据迭代:如果相应中包含多组匹配项,可以设置处理器循环提取后应用于多个请求,适用于测试列表或搜索结果页面。
设置步调
- 添加正则表达式用户参数:
○ 在JMeter的工作台或测试计划中,选中一个HTTP请求或其他需要参数化的取样器。
○ 右键点击选择“添加” > “前置处理器” > “正则表达式用户参数”。
- 设置参数:
○ Regular Expression Reference Name:正则表达式提取器中的变量名称,此处的名称必须要与正则表达式中的划一。
○ Parameter names regexp group number:参数名字的组号,后续样例详细说明。
○ Parameter values regex group number:参数名称组对应值,后续样例详细说明。
实例说明
我们使用SpringBoot编写如下部分接口代码
- @PostMapping(value = "/login",produces = "application/json;charset=UTF-8")
- public String authenticate(@RequestBody JSONObject request) {
- String validUsername = "admin";
- String validPassword = "password";
- String response = "{"total":2,"data":[{"id":123,"name":"John Doe","email":"johndoe@example.com","phone":"123-456-7890","address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"},"interests":["sports","music","travel"]},{"id":456,"name":"Jane Smith","email":"janesmith@example.com","phone":"987-654-3210","address":{"street":"456 Elm St","city":"Los Angeles","state":"CA","zip":"90001"},"interests":["reading","cooking","hiking"]}]}";
- if (request.getString("username").equals(validUsername) && request.getString("password").equals(validPassword)) {
- return response;
- } else {
- return response;
- }
- }
复制代码 然后我们编写以下脚本
线程组:保持默认
HTTP请求1:协议http,服务器名称大概IP127.0.0.1,端口号8091,方法POST,路径/login,内容编码utf-8,消息体数据
- {
- "username": "admin",
- "password": "password"
- }
复制代码 正则表达式提取器:设置的参数为引用名称var,正则表达式"id" |