接口测试3-接口依赖之token提取

1 背景

很多时候我们的接口之前都是有依赖的,比如商城数据;也有一些操作必须登录之后才能进行下一步的操作;为了安全,大部分网站都会使用token,这节我们主要讲怎么获取登录后的token,然后携带登录后的token进行下一步操作

2 测试环境

有条件的同学可以自己写一些框架服务启动后测试,这里我使用的是果创云平台大家可以免费注册一个账号

3 案例场景

现在有一个登陆接口A,登陆成功后返回一个token值。有一个检查账号登录状态的接口B,但是接口B必须要先登录后传登录的token才能访问
A接口登录接口文档基本信息
访问地址:http://api.yesapi.cn/api/App/User/Login
请求类型:POST
请求头部:application/json
请求参数:app_key: 开发者应用的app_key
username:会员账号
password:需md5加密

返回值:
在这里插入图片描述

B接口接口文档基本信息
访问地址:http://api.yesapi.cn/api/App/User/AlterPassword
请求类型:POST
请求头部:application/json
请求参数:app_key: 开发者应用的app_key
uuid:UUID,全局唯一用户ID
token:会话凭证

返回值:
在这里插入图片描述

4 创建登录请求

在这里插入图片描述
返回值,会话的状态码以及uuid以及凭证
在这里插入图片描述

4.1 登录状态检查接口

在这里插入图片描述
这里的会话凭证我们手动的登录系统然后利用工具获取得到手动填写在这里,如下,当我们请求时,凭证一旦过期我们就无法成功访问接口,那么我们如何动态的获取会话凭证么,接下来就是就利用提取器来获取我们想要的数据
在这里插入图片描述

4.2 添加提取器

提取器有json xpath,正则,我们可以根据返回值的不同选择不同的提取器,这里已json extractor为例
在这里插入图片描述
在这里插入图片描述

4.2.1 JSON提取器参数说明:

Variable names(名称):提取器的名称
Apply to(应用范围):
Main sample and sub-samples:应用于主sample及子sample
Main sample only:默认的是这个,应用于主sample
Sub-samples only:应用于子sample
JMeter Variable :应用于变量命名的内容
Variable names:保存的变量名,后面使用${Variable names}引用
Names of created variables 参数名称
JSON Path expressions 提取表达式
在这里插入图片描述

Match No.(0 for Random) 匹配规则,-1所有,0随机,1第一个
Compute concatenation va 如果有匹配到多个值,选择此项,会将全部值保存到_ALL,并使用逗号分割每个值,注意Match No. (0 for Random)需要为-1才有效,不然只能匹配到一个值了
Default Values 没提取到就给默认值

4.2.2 JSON表达式如何验证:

在这里插入图片描述
为了表达式的准确性,我们可以在监听器中选择json path tester,选择对应的请求输入表达式验证,若涉及多个参数,用分号分开
在这里插入图片描述
在这里插入图片描述

4.3 正则提取器

在这里插入图片描述
要检查的响应字段:样本数据源,默认选主体。
引用名称:其他地方引用时的变量名称(re_token),可自定义设置,引用方法: 引 用 名 称 正 则 表 达 式 : 数 据 提 取 器 , ( ) 括 号 里 为 你 要 获 取 的 的 值 , 如 : " t o k e n " : " ( . ∗ ? ) " 模 板 : {引用名称} 正则表达式:数据提取器,()括号里为你要获取的的值,如:"token": "(.*?)" 模板: (),"token":"(.?)"$对应正则表达式提取器类型。-1全部,0 随机,1第一个2第二个,以此类推,若只有一个正则一般就填写 1 1 1
匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。
-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1
缺省值:匹配失败时的默认值,可以随便写个,不写也可以,或者勾选失败时候使用空值

4.4 xpath提取器

有些web项目是前后端不分离的,返回的内容不是那种纯进口返回json格式,返回的是一个HTML页面。
并且有些参数是隐藏在html里面的,需要先从html页面中取出隐藏参数,如:django admin中的csrfmiddlewaretoken,输入账号和密码登录成功后,抓包发现除了账号和密码参数,还有一个参数csrfmiddlewaretoken,并且这个参数每次都是动态的,不是固定值
在这里插入图片描述

4.4.1 首先访问首页 获取csrftoken

在这里插入图片描述

4.4.2 xpath 提取指定数据

在这里插入图片描述

4.4.3 关联数据登录

在这里插入图片描述
在这里插入图片描述
这里的错误是cookie问题 后面我们再讲

5 关联参数

在这里插入图片描述
次数接口可以正常调用
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值