• Python接口自动化测试:利用的是requests库,Fiddler抓包配合、以及鉴权的流程


    1.前言:

    今天服务器那边还在改Bug,平台有些功能测不了,海哥突然让我写自动化脚本,受宠若惊,压根没干过,所以讲过程和知识点仔细记录下来。
    主要解决问题:接口自动化之Cookie,Session,Token鉴权解决方案
    今天终于把鉴权问题解决了!

    2.情景:

    平台是需要登录后才能使用相关功能,我所要做的是就是某个添加功能模块不断的添加设备数据。

    3.相关知识点:

    http协议:多个请求之间是独立的,但是在某些场景下需要验证多个请求时同一个主机发出

    3.1 Cookie

    Cookie并不是缓存,Cookie是在服务器产生的存储在客户端的一小段文本信息,格式是字典(键值对)
    Cookie分类: 会话级(浏览器关闭就会丢失) 持久化(保存在硬盘里,过了失效时间被清除)
    Cookie鉴权原理:
    Cookie缺点:保存在客户端,对于一些敏感信息不够安全。

    3.2 Session

    当用户第一次访问服务器的时候,服务器会产生一个Session_ID(字符串)并保存起来(保存在服务器内存),这个Session_ID传输的过程中是加密的,客户端收到之后会保存在Cookie里,之后请求只发生Session_ID
    Session缺点:解决了Cookie不安全问题,但当用户量比较大的时候容易导致服务器崩溃

    3.3 token

    当用户第一次访问服务器的时候,服务器会返回一个Token令牌(保存在数据库里),下次申请带上这个令牌就可
    token分类:access_token(一般15分钟) refresh_token(一般15天)

    3.4 Cookie Session token三者的异同点

    相同点:都是服务器产生的数据
    不同点:使用Session可不用存储敏感信息,Cookie保存在客户端不安全,Session保存服务器内存中数据量大易崩溃, token保存在数据库或者文件中。

    4.思考过程

    4.1 登录接口

    开始时是完全没有头脑的,只能先在浏览器上操作一遍用Fiddler抓包把相关参数记录下来。
    其中每一个请求方式是在header中在这里插入图片描述
    抓包要注意的有,URL,数据格式、具体参数。除此之外还要注意header里面
    一下是登录接口,在这里Body中的内容既可以写成键值对,因为变化不对也可以直接写成字符串
    在这里插入图片描述

    4.2添加设备接口

    在添加设备时遇到的最大问题就是鉴权问题,不管是哪种鉴权方式在正常的请求下鉴权信息已经被包含在Header中。
    其次就是我开始直接把token信息抓到之后放入我的代码中,因为我在正常网页添加的时候发现每一个token信息都是一样的,这对于自动化接口来说是一个误区,在第一步的登录接口中每次服务器返回的token都不是一样的,所以在这里需要用正则表达式在获取最新的token。

    此外还需要注意Authorization认证,这个HTTP的一个基础认证,需要抓包看一下具体内容,一般和用户名、密码、鉴权信息、时间戳有关
    在这里插入图片描述

    在解决完鉴权之后服务器返回操作错误,最后是因为我得Body里面的内容格式写的有差别,在这里还需要注意一下json的写法
    在这里插入图片描述

    post请求中json和data的和两种格式:
    左图是正确格式,右图是我手残格式
    在这里插入图片描述在这里插入图片描述

  • 相关阅读:
    含文档+PPT+源码等]精品微信小程序spring boot批发零售业商品管理系统[包运行成功]计算机毕设Java毕设项目源码
    tensorboard报错解决:No dashboards are active for the current data set
    嵌入式单片机项目开发的基本思想分享
    Unity摄像机跟随
    SpringBoot笔记梳理
    Windows工业三防平板全功能NFC近距离感应一维/二维扫描
    全局事件总线
    1600*C2. k-LCM (Hard version)(找规律)
    kafka介绍
    k8s--基础--29.2--ingress--安装Ingress Controller和配置Ingress
  • 原文地址:https://blog.csdn.net/qq_42573052/article/details/127015270