jmeter压测学习4-正则表达式提取

前言

上一个接口返回的token作为下个接口的入参,除了前面一篇讲到的用json提取器提取,也可以用正则提取。
json提取器只能提取json格式的数据,正则可以匹配任意的返回。

我现在有一个登陆接口A,登陆成功后返回一个token值。有一个获取绑定卡号的接口B,但是接口B必须要先登录后传登录的token才能访问
A接口登录接口文档基本信息

A接口的请求和返回的报文信息如下

D:\>http http://127.0.0.1:8000/api/v1/login/ username=test password=123456 -v
POST /api/v1/login/ HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 42
Content-Type: application/json
Host: 127.0.0.1:8000
User-Agent: HTTPie/1.0.3

{
    "password": "123456",
    "username": "test"
}

HTTP/1.1 200 OK
Allow: POST, OPTIONS
Content-Length: 109
Content-Type: application/json
Date: Sat, 21 Sep 2019 15:37:06 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN

{
    "code": 0,
    "msg": "login success!",
    "token": "234af73571da46ade79ea6a74961b1d23d609b79",
    "username": "test"
}

B接口获取绑定卡号的接口文档基本信息

登录请求

先在jmeter里面添加http请求,填登录接口的参数

HTTP信息头管理器添加post请求类型:Content-Type: application/json

运行之后查看结果数,可以看到正确的返回我们想要的token值

正则提取器

添加后置处理器-正则提取器

返回的结果,从结果中提取token对应的值:50c7e57363141459fab998376350ed3c3dee1baf

{"code": 0, "msg": "login success!", "username": "test", "token": "50c7e57363141459fab998376350ed3c3dee1baf"}

正则提取器参数说明:

  • 要检查的响应字段:样本数据源,默认选主体。

  • 引用名称:其他地方引用时的变量名称(re_token),可自定义设置,引用方法:${引用名称}

  • 正则表达式:数据提取器,()括号里为你要获取的的值,如:"token": "(.*?)"

  • 模板:$$对应正则表达式提取器类型。-1全部,0 随机,1第一个2第二个,以此类推,若只有一个正则一般就填写$1$

  • 匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。
    -1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1

  • 缺省值:匹配失败时的默认值,可以随便写个,不写也可以,或者勾选失败时候使用空值

引用参数

下个请求引用上面的token参数

查看结果,引用成功


上海-悠悠,QQ交流群:750815713

posted @ 2019-11-30 13:45  上海-悠悠  阅读(...)  评论(... 编辑 收藏