Jmeter练习(2)关联-正则表达式提取器

本文介绍了一种验证Token正确性的方法,包括登录获取Token及用户ID的过程,并详细解释了如何使用正则表达式提取器来抓取这些值。此外,还讨论了在验证过程中可能遇到的问题及其解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天研发同事提供了一个验证token的接口,要验证token的正确性,现在将整个过程做如下记录:
  • 场景:验证token的正确性
  • 原理:首先用户登录成功后,会在Response headers中返回一个token值,以及在响应信息中,返回用户id。验证token时,需要获取这个token值以及用户id作为参数去验证token的正确性,如果正确,则返回TRUE;反之,则返回FALSE。
  • 分析:如果要验证token的正确性,那么第一步就是在登录成功后,去拿对应的值,并把这个值作为参数,放到token的接口中进行传参。
 
实施如下:
1.接口:
  • 验证token正确性
    • 地址:http://ip:port/user-center/usertoken/validatetoken
    • 方式:post
    • 参数:*userid:用户id ;*token:当前的token值
  • 用户登录
    • 地址:http://ip:port/user-center/user/json/login
    • 方式:post
    • 参数:*LOGIN:登录名 ;*PASSWORD:密码,通过md5加密之后的密码
2.实施过程:
    • 第一步:添加第一个http请求:用户登录(此处不多讲)
                   

 

             运行结果如下(在结果中我圈出了在验证token中需要的参数值):

 

 
    • 第二步:使用“正则表达式提取器”获取上面的两个值
           

 

             
 
               
 
 
    • 第三步:添加第二个http请求:验证token
                

 

  备注:此处的参数化中的值,要与“第二步中的引用名称保持一致”
    •  第四步:运行,并查看结果(大家可以比较一下,此处获取的值与“第一步运行结果”的值是否一致,如果一致,则说明获取成功,如果不一致,则说明在配置中存在问题)
                

 

3.问题
总结一下在此次实施过程遇到的问题:
  • 问题一:参数化后,获取token值有误,不能取到值
          原因:1,“要检查的响应字段”选错,应该选择“信息头(响应信息头)”
                     2,正则表达式有误,没有加上结束的判断,更改后为“TOKEN: (.+?)\s\S”或者“TOKEN: (.+?)\n”(因为有换行)
 
4.相关知识
  • 正则
      

 

 
 
         
 
 

转载于:https://www.cnblogs.com/diqitian/p/6617178.html

<think>嗯,用户想了解如何使用JMeter正则表达式提取器来提取token。首先,我需要回顾一下相关知识。根据引用[3],正则表达式提取器是后置处理器的一种,用于从取样器的响应结果中提取内容。用户需要的是具体步骤和示例。 首先,我应该列出使用步骤。根据引用[1]和[2],步骤包括添加提取器、配置参数、引用变量。然后,需要具体说明每个参数的设置,比如引用名称、正则表达式模板等。引用[4]提到变量引用的方式,所以最后要说明如何使用${token}。 接下来是示例部分。用户需要一个实际例子,比如登录接口返回的JSON中包含token。这时候正则表达式应该怎么写?比如"token":"(.*?)",这样非贪婪匹配。左右边界要明确,确保正确提取。可能需要处理多个匹配,但用户可能只需要第一个,所以模板$1$。 还要注意常见问题,比如正则表达式是否正确,是否处理了特殊字符,或者是否需要转义。引用[2]中的疑难杂症部分可以提到这些,比如左右边界不确定怎么办,或者多个值的情况。此外,可能需要建议测试正则表达式是否有效,比如使用调试取样器。 最后,生成相关问题,比如如何提取多个值,或者JSON提取器的比较,这样用户如果有进一步的问题可以继续探索。确保回答结构清晰,步骤明确,示例具体,这样用户能跟着操作。</think>### JMeter正则表达式提取器提取Token使用方法 #### 一、操作步骤 1. **添加取样器**:在需要提取Token的HTTP请求下添加取样器(如登录接口)[^3]。 2. **添加正则表达式提取器**:右键点击取样器 → 添加 → 后置处理器 → 正则表达式提取器[^1]。 3. **配置参数**: - **引用名称**:自定义变量名(如`token`) - **正则表达式**:根据响应内容编写,如`"token":"(.*?)"` - **模板**:`$1$`(表示提取第一个捕获组) - **匹配数字**:`1`(取第一个匹配项) - **缺省值**:`NOT_FOUND`(可选) ```plaintext 示例配置: 引用名称: token 正则表达式: "token":"(.*?)" 模板: $1$ 匹配数字: 1 ``` 4. **引用变量**:在后续请求中使用`${token}`调用提取值,如请求头中添加`Authorization: Bearer ${token}`[^4]。 --- #### 二、实际应用示例 **场景**:登录接口返回JSON数据: ```json {"code":200, "data":{"token":"abc123xyz"}, "msg":"success"} ``` **正则表达式配置**: - 精确匹配:`"token":"([^"]+)"` 解释:匹配双引号内的任意非引号字符 - 通用匹配:`"token":"(.*?)"` 解释:非贪婪模式匹配最短内容 --- #### 三、注意事项 1. **特殊字符转义**:若响应内容包含`\`或`"`,需使用`\`转义,如`\\"token\\":\\"(.*?)\\"` 2. **调试技巧**: - 使用`Debug Sampler`查看提取结果 - 在`View Results Tree`中检查响应数据格式 3. **性能优化**:正则表达式尽量具体,避免`.*`过度匹配[^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值