详细讲解,接口自动化—Requests之Cookie鉴权关联接口实战

news2024/11/29 5:32:16

目录

前言:

一、 简介

二、 实战操作

1. 登录接口

2. 查询订单接口

3. 新增订单接口

4. 修改订单接口

5. 删除订单接口

三、 结束语


前言:

接口自动化测试是软件测试过程中的重要一环,现在越来越多的公司开始使用自动化测试来提高测试效率和测试质量。在接口自动化测试中,请求参数的传递、接口返回数据的解析、状态码的判断等都是测试人员需要关注和处理的问题。其中,接口鉴权比较常见,而Cookie鉴权是一种常用的鉴权方式。在本篇文章中,我们将如何使用Requests库实现Cookie鉴权并关联接口的实战操作过程。

一、 简介

Requests是Python中最流行的HTTP库之一,它提供了一个简单且易于使用的接口,用于发送HTTP/1.1请求。在测试接口中,Requests被广泛应用于HTTP请求发送、接口性能测试、接口自动化测试等方面。

二、 实战操作

我们在实战中,以一个订单管理接口为例来演示Cookie鉴权的相关操作。该接口需要登录后才能进行访问,而且接口返回的数据格式为JSON格式。我们将演示如何使用Requests库进行接口自动化测试,完成订单查询、订单新增、订单修改和订单删除操作。

1. 登录接口

在进行鉴权关联之前,我们需要先登录获取到Cookie进行鉴权。登录接口的请求参数为用户名和密码,接口返回的数据中包含一个类似于token的Cookie。下面是代码演示:

import requests

# 登录接口
def login():
    url = 'http://xxxxx/login'
    user = {'username': 'test', 'passwor': '123456'}
    res = requests.post(url, data=user)
    # 获取Cookie
    cookie = res.cookies.get('token')
    return cookie

2. 查询订单接口

接下来,我们将演示如何使用Cookie鉴权实现订单查询功能。该接口需要在请求头中添加Cookie,我们可以使用Requests库的headers参数来设置请求头,具体代码如下:

import requests

# 查询订单接口
def query_order(cookie):
    url = 'http://xxxxx/query_order'
    headers = {'Cookie': 'token=' + cookie}
    res = requests.get(url, headers=headers)
    data = res.json()
    return data

3. 新增订单接口

新增订单接口需要提交订单信息。在此之前,我们需要先把需要提交的订单信息保存在一个字典中,然后使用Requests库的json参数来提交JSON格式的数据。下面是代码演示:

import requests

# 新增订单接口
def add_order(cookie):
    url = 'http://xxxxx/add_order'
    order_info = {'order_no': 'xxxxxx', 'order_amount': 100}
    headers = {'Cookie': 'token=' + cookie}
    res = requests.post(url, json=order_info, headers=headers)
    data = res.json()
    return data

4. 修改订单接口

修改订单接口需要提供订单ID以及修改的订单信息。我们可以将订单ID和订单信息保存在一个字典中,然后使用Requests库的put方法来提交修改请求。下面是代码演示:

import requests

# 修改订单接口
def modify_order(cookie):
    url = 'http://xxxxx/modify_order'
    order_info = {'order_id': 1, 'order_no': 'yyyyyy', 'order_amount': 200}
    headers = {'Cookie': 'token=' + cookie}
    res = requests.put(url, json=order_info, headers=headers)
    data = res.json()
    return data

5. 删除订单接口

删除订单接口需要提供订单ID,我们可以将订单ID保存在一个字典中,然后使用Requests库的delete方法来提交删除请求。下面是代码演示:

import requests

# 删除订单接口
def del_order(cookie):
    url = 'http://xxxxx/del_order'
    order_info = {'order_id': 1}
    headers = {'Cookie': 'token=' + cookie}
    res = requests.delete(url, json=order_info, headers=headers)
    data = res.json()

return data

到这里,我们已经完成了Cookie鉴权关联接口的实战操作。下面,我们将整个代码串联起来,实现一个完整的测试用例。完整代码如下:

import requests

# 登录接口
def login():
    url = 'http://xxxxx/login'
    user = {'username': 'test', 'passwor': '123456'}
    res = requests.post(url, data=user)
    # 获取Cookie
    cookie = res.cookies.get('token')
    return cookie

# 查询订单接口
def query_order(cookie):
    url = 'http://xxxxx/query_order'
    headers = {'Cookie': 'token=' + cookie}
    res = requests.get(url, headers=headers)
    data = res.json()
    return data

# 新增订单接口
def add_order(cookie):
    url = 'http://xxxxx/add_order'
    order_info = {'order_no': 'xxxxxx', 'order_amount': 100}
    headers = {'Cookie': 'token=' + cookie}
    res = requests.post(url, json=order_info, headers=headers)
    data = res.json()
    return data

# 修改订单接口
def modify_order(cookie):
    url = 'http://xxxxx/modify_order'
    order_info = {'order_id': 1, 'order_no': 'yyyyyy', 'order_amount': 200}
    headers = {'Cookie': 'token=' + cookie}
    res = requests.put(url, json=order_info, headers=headers)
    data = res.json()
    return data

# 删除订单接口
def del_order(cookie):
    url = 'http://xxxxx/del_order'
    order_info = {'order_id': 1}
    headers = {'Cookie': 'token=' + cookie}
    res = requests.delete(url, json=order_info, headers=headers)
    data = res.json()
    return data

if __name__ == '__main__':
    # 获取Cookie
    cookie = login()
    # 查询订单
    query_result = query_order(cookie)
    print('查询订单结果:', query_result)
    # 新增订单
    add_result = add_order(cookie)
    print('新增订单结果:', add_result)
    # 修改订单
    modify_result = modify_order(cookie)
    print('修改订单结果:', modify_result)
    # 删除订单
    del_result = del_order(cookie)
    print('删除订单结果:', del_result)

三、 结束语

本篇文章主要介绍了如何使用Requests库实现Cookie鉴权关联接口的实战操作过程。在实际的应用中,我们还需要考虑接口的异常情况处理、性能测试、测试结果的输出和报告等。

   

【自动化测试交流】:574737577http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=L7ciHIyOnE5wR-WjW99VYUQELBbNvwEi&authKey=d28p8qACMAvFA0DEZRwQEVTHiANFRKlRSSnAMBo7rnwuJexGvBynhSCyZ4CAZZz8&noverify=0&group_code=574737577

 接口自动化测试:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/528345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gigabyte Z490 Vision D i9-10900k电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件型号驱动情况 主板Gigabyte Z490 Vision D 处理器Intel i9-10900k已驱动 内存64GB G.Skill Trident Z 3600Mhz CL18已驱动 硬盘西数 WDS250G3X0C-00SJG0 ( SN750) …

cad文件怎么转换成pdf格式?一键操作的4个方法

在很多时候,我们为了能够更好地查看CAD图纸,需要将其格式转换为PDF。所以说,CAD文件格式的转换是非常关键的。首先,将CAD转换为PDF格式能够有效提升文件的兼容性。CAD软件通常需要特定的软件才能打开和编辑,而PDF格式则…

Python Scrapy爬虫框架安装和创建

1、检查Win环境 python版本 python 2、whl方式安装 twisted twisted异步网络框架,可加快下载速度。优点是用少量的代码实现快速的抓取。 由于scrapy需要twisted的环境,我们直接去下载whl文件根据自己的Python版本选择 https://www.lfd.uci.edu/~gohlke/p…

由浅入深理解java集合(五)——集合 Map

HashMap 前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍Map接口下的两个重要的集合实现类HashMap,TreeMap。 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 既然要介绍HashMap,那么就顺带介绍HashTable,两者进…

【UE4】部署像素流

目录 一、单实例本地像素流送 步骤 1. 勾选插件 2. 打包工程并启动信令服务器 3. 创建快捷方式并启动游戏 二、单实例局域网像素流送 步骤 1. 编辑cirrus.js 2. 编辑快捷方式属性 3. 启动 一、单实例本地像素流送 步骤 1. 勾选插件 勾选使用“Pixel Streaming”插件&…

瑞吉外卖 - 新增员工功能(6)

某马瑞吉外卖单体架构项目完整开发文档,基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成,有需要的胖友记得一键三连,关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料:https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

智慧水务管控一体化平台,实现水务数字化管理

平台概述 柳林智慧水务管控一体化平台是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心,以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为支撑,以城市水资源、水生…

ArcSWAT报错:数据集未投影;Dataset must have a projected coordinate system

文章目录 1 报错内容2 定义投影3 重新执行ArcSWAT相关步骤 1 报错内容 Dataset must have a projected coordinate system. The current coordinate system is geographic . Please define a projected coordinate system for your DEM dataset using ArcToolbox before procee…

Java 线程池(Thread Pools)详解

目录 1、线程池介绍 2、线程池执行原理 3、线程池中的阻塞队列 4、Java 线程池中的拒绝策略 5、Java 提供的创建线程池的方式 6、线程池的使用示例 7、ForkJoinPool 和 ThreadPool 的区别 1、线程池介绍 线程池是一种重用线程的机制,用于提高线程的利用率和管…

Android开发:我们很迷茫,出路在哪里?

“都说今年是互联网行业寒风刺骨,尤其移动端开发市场更是饱和,在跌跌撞撞近一个月后,我终于在一家小公司找到了工作。入职后,领导让我接手一个二手Android项目,项目很庞大,前任开发人员已离职一个多月了&am…

实现 Kubernetes 安全态势管理

Kubernetes 已经成为容器编排的事实标准。它引入了强大的管理功能,但也带来了一些严峻的安全挑战——尤其是在多云环境中。其中包括缺乏对设置的可见性、镜像的滥用、通信故障和监控困难。 理解 K8s 的安全挑战 Kubernetes 挑战的核心是需要以高度协调的方式管理大…

日撸 Java 三百行day51

文章目录 说明Day51 KNN 分类器1.KNN2.代码1.aff内容解读2.代码理解 说明 闵老师的文章链接: 日撸 Java 三百行(总述)_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护:https://github.com/fulisha-ok/sampledat…

静电防护:消除静电的秘诀!

随着现代科技的进步,人们对静电防护越来越重视。有的人认为消除静电是不可能做到的事情,但实际上并不是这样的! 1:静电的产生 静电是一个非常普遍的现象,通常发生在5 kV电压下。静电可以产生于物体表面或环境中。如果…

电视盒子哪个牌子好?博主力荐2023目前性能最好的电视盒子

电视盒子能让电视机在不换新的前提下丰富资源、升级配置,是电视机的最佳拍档,但面对这么多的品牌让大家在选购时都会疑惑电视盒子哪个牌子好,博主老周盘点了目前性能最好的电视盒子,具体是哪些品牌呢?请看下文&#xf…

CMU-CERT内部威胁数据集 Insider Threat

CMU-CERT内部威胁数据集 Insider Threat CMU-CERT简介CMU-CERT版本CMU-CERT r1版本内容logon.csv内容decive.csv内容HTTP.csv内容LDAP and Administrative records勘误一些已知的缺陷 CMU-CERT网站 CMU-CERT简介 首先解释一下CMU-CERT是什么意思。 “CMU”是卡内基梅隆大学&a…

专业的Web自动化测试工具拥有哪些特点?

Web自动化测试是为了解决Web应用程序测试工程师在测试过程中的挑战和复杂性而实施的,可以通过自动化测试工具来实现。自动化测试工具是一种软件,其目的在于自动执行测试,提高测试效率和测试准确性,那专业的Web自动化测试工具拥有哪…

Learning C++ No.20【二叉树OJ题实战】

文章目录 引言:第一题:根据二叉树创建字符串第二题:二叉树的层序遍历第三题:自底向上实现层序遍历第四题:二叉树的最近公共祖先第五题:将搜索二叉树转换成双向链表第六题:从前序和中序遍历序列构…

什么是字符串数组

一、概念理解 1.C语言中没有字符串类型,用一片内存空间保存一串字符,这片空间称作字符数组。 2.以‘\0’结尾的字符数组被称为字符串数组。‘\0’是字符串结束的标志。 3.用双引号括起来的都是字符串。 二、初始化 char str[6] {h,e,l,l,o,\0};//字符串…

Linux网络——shell编程之sed编辑器

Linux网络——shell编程之sed编辑器 一、sed编辑器1.概述2.工作流程3.工作场景4.常用选项 二、sed编辑器基本用法1.打印操作2.打印行号3.增加操作4.插入操作5.替换操作6.删除操作7.字符转换 一、sed编辑器 1.概述 sed是一种在线编辑器,它一次处理一行内容。处理时&…

JWT学习

JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。虫虫今天给大家介绍JWT的原理和用法。 1.跨域身份验证 Internet服务无法与用户身份验证分开。一般过程如下。 1.用户向服务器发送用户名和密码。 2.验证服务器后,相关数据&#…