之前的课程讲解过配置元件中间的CSV Data Set Config 组件和函数助手对话框进行参数化,这些数据可以通过客户端进行参数化,但是,性能测试过程中间有些数据不能简单通过客户端进行参数化,而是来源于服务端响应,比如:1、登录成功后服务器会返回一个登录凭证,防止csrf攻击而生成的token。2、查询订单信息订单号是通过服务端响应返回给客户端。3、用户登录,session 信息不同,需保存动态的session。这些情况客户参数化已经无法满足要求,所有,需通过后置处理器组件进行处理。
关联:将上一个请求的响应结果作为下一个请求的参数
线程组右键--->sample-->Http 请求,Http 请求右键--->后置处理器--->正则表达式提取器
参数说明
名称 |
根据需求定义名称 |
注释 |
非必填项 |
Apply to |
作用范围(返回内容的断言范围) Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器 Main sample only:仅作用于父节点的取样器 Sub-samples only:仅作用于子节点的取样器 JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称) |
要检查的响应字段 |
需要检查的响应报文的范围 主体:响应报文的主体 Body(unescaped):主体,响应的主体内容且替换了所有的html转义符,注意html转义符处理时不考虑上下文 Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能 Response Headers:响应信息头 Request Headers:请求信息头 URL:统一资源定位符,即Internet上用来描述信息资源的字符串Response Code:响应状态码,比如200、404等 Response Message:响应信息 |
引用名称 |
定义变量的名称,存储提取的结果:即下个请求需要引用的值、字段、变量名(例子中提取的是title) |
正则表达式 |
使用正则表达式解析响应结果,“()”表示提取字符串中的部分值 |
模板 |
从匹配的结果中创建一个字符串,这是通过正则表达式匹配出来的一组值,意为使用提取到的第几个值(可能有多个值匹配,因此使用模板);从1开始匹配 |
匹配数字 |
正则表达式匹配数据的结果可以看做一个数组,表示如何取值:0代表随机取值,正数n则表示取第n个值(比如1代表取第一个值),负数则表示提取所有符合条件的值 |
缺省值 |
匹配失败时候的默认值 |
正则表达式操作符
操作符 |
含义 |
() |
括起来的部分就是要提取的 |
. |
匹配任何字符串 |
* |
表示任意个字符 |
? |
不要太贪婪,在找到第一个匹配项后停止。 |
\d |
数字 |
\w |
数字或者字母 |
{n} |
表示n 个字符 |
{n,m} |
表示n-m个字符 |
\s |
空白符 |
[] |
表示范围 |
[0-9a-zA-Z] |
数字或者字母 |
获取更多完整视频资料点击如下链接地址:
实例一
通过后置处理器之正则表达式提取器,提取网易云课堂的标题,然后,Debug Sample 采样器的名称为正则表达式提取器提取出来的内容。
1、新建一个线程组
2、线程组右键---添加--->sample--->Http 请求,服务器名称或IP:study.163.com
Http 请求响应数据,响应数据中间的标题为:<title>网易云课堂 - 专注职场与生活技能提升</title>,把该内容复制到正则表达式提取器,正则表达式:<title>(.+?)</title>,(.+?)为需要提取的内容。
3、Http 请求右键--->后置处理器-->正则表达式提取器,Apply to 选择“Main sample only”,要检查的响应字段选择“主体”,引用名称:title 定义变量名称,以便后续采样器引用,
正则表达式:<title>(.+?)</title>, 模版:$1$,匹配数字(0 代表随机):1,缺省值:null
1、新建一个Debug Sample 采样器,引用正则表达式提取器中间的变量名称为:${title}
1、添加一个察看结果树的监听器,运行,查下结果,察看结果树中间的名称为正则表达式提取器中间的标题。
把正则表达式提取器中间的模版把$1$改成$0$,其他组件保持不变看一下运行结果
获取更多完整视频资料点击如下链接地址: