• 软件测试/测试开发丨接口自动化测试,接口鉴权的多种方式


    点此获取更多相关资料

    本文为霍格沃兹测试开发学社学员学习笔记分享
    原文链接:https://ceshiren.com/t/topic/28000

    一、后端接口鉴权常用方法

    • cookie

      1. 携带身份信息请求认证
      2. 之后的每次请求都携带cookie信息,cookie记录在请求头中
    • token

      1. 携带身份信息请求认证
      2. 之后的每次请求都携带token认证信息
      3. 可能记录在请求头,可能记录在url参数中
    • auth

      1. 每次请求携带用户的username和password,并对其信息加密
    • oauth2(选修)

      1. 携带身份信息请求认证
      2. 服务端向指定回调地址回传code
      3. 通过code获取token
      4. 之后的请求信息都携带token。

    二、cookie 鉴权

    1. cookie 的获取(根据接口文档获取)

    2. 发送携带 cookie 的请求

      • 直接通过 cookies 参数
      • 通过 Session() 对象
    class TestWithSession:
        proxy = {"http": "http://127.0.0.1:8888", "https": "https://127.0.0.1:8888"}
        req = requests.Session()
    
        def setup_class(self):
            url = "http://train-manage.atstudy.com/login"
            data = {"username": "199****9999", "password": "a1***56"}
            resp = self.req.request("post", url, data=data, proxies=self.proxy)
            print(self.req.headers)
    
        def test_get_userinfo(self):
            url = "http://train-manage.atstudy.com/api/manage/User/Info"
            resp = self.req.request("get", url, proxies=self.proxy)
            print(resp.text)
    
        def test_manage_tag(self):
            url = "http://train-manage.atstudy.com/api/manage/Tag?type=1"
            resp = self.req.request("get", url, proxies=self.proxy)
            print(resp.text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    三、token 鉴权

    1. token 的获取(根据接口文档获取)
    2. 发送携带 token 的请求(根据接口文档获取)
    class TestWithToken:
        proxy = {"http": "http://127.0.0.1:8888", "https": "http://127.0.0.1:8888"}
        headers = {}
    
        def setup_class(self):
            token = self.login().json()["data"]["token"]
            print(token)
            self.headers["x-litemall-admin-token"] = token
    
        @classmethod
        def login(cls):
            url = "https://litemall.hogwarts.ceshiren.com/admin/auth/login"
            data = {"username": "hogwarts", "password": "test12345", "code": ""}
            resp = requests.request("post", url, json=data, proxies=cls.proxy, verify=False)
            return resp
    
        def test_get_dashboard(self):
            url = "https://litemall.hogwarts.ceshiren.com/admin/dashboard"
            resp = requests.request("get", url, headers=self.headers, proxies=self.proxy, verify=False)
            print(resp.text)
            # print(1)
    
        def test_category_list(self):
            url = "https://litemall.hogwarts.ceshiren.com/admin/category/list"
            resp = requests.request("get", url, headers=self.headers, proxies=self.proxy, verify=False)
            print(resp.text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    时隔六年,苹果超越vivo,再次成为中国市场最大智能手机厂商
    ASP.NET Core 8 的 Web App
    如何解决Windows本地微服务并发启动后端口占用问题
    PixiJS源码分析系列:第二章 渲染在哪里开始?
    Google Earth Engine(GEE)——用geometry点来改变选的影像范围,并进行加载的APP
    测试岗面试,一份好的简历总可以让人眼前一亮
    【MTK】 配置GPIO控制前置闪光灯
    hinge loss的一种实现方法
    通过Power Platform自定义D365 CE 业务需求 - 8. 使用PowerApps配置
    mmcv的环境 真 TM 难配
  • 原文地址:https://blog.csdn.net/Ceshiren666/article/details/134420949