• 接口测试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 关联参数

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

  • 相关阅读:
    【WinRAR】去除请购买WinRAR许可
    页面置换算法
    Spring IOC工厂
    监控与升级
    Web前端指令符:解码、应用与挑战
    力扣刷题day48|583两个字符串的删除操作、72编辑距离
    pyinstaller打包程序,cmd窗口,启动画面,导入依赖文件等问题的处理
    在 SAP Fiori Gateway 系统配置一个指向 SAPGUI 事务的 tile
    .NET Conf China 2023 活动纪实 抢先看
    CsvHelper:一个轻便高性能的Csv文件读写操作开源库!
  • 原文地址:https://blog.csdn.net/qq_43004728/article/details/125613087