接口自动化测试总结,接口鉴权+加密与解密+数据库操作/断言...

前言

1、接口鉴权的多种方式

1)后端接口鉴权常用方法

cookie: 携带身份信息请求认证 之后的每次请求都携带cookie信息,cookie记录在请求头中

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

auth: 每次请求携带用户的username和password,并对其信息加密

oauth2(选修): 携带身份信息请求认证 服务端向指定回调地址回传code 通过code获取token 之后的请求信息都携带token。

2)cookie 鉴权

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

发送携带 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)

3)token 鉴权

token 的获取(根据接口文档获取) 发送携带 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@classmethoddef 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 respdef 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)
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn999】

2、加密与解密

1)原理

在得到响应后对响应做解密处理:

如果知道使用的是哪个通用加密算法的话,可以自行解决。 如果不了解对应的加密算法的话,可以让研发提供加解密的lib。

如果既不是通用加密算法、研发也无法提供加解密的lib的话,可以让加密方提供远程解析服务,这样算法仍然是保密的。

2)实战练习

调用python自带的base64,直接对返回的响应做解密,即可得到解密后的响应。 封装对于不同算法的处理方法。

class TestEncode:def test_decode(self):url = "http://127.0.0.1:9999/demo.txt"res = requests.request("get",url)print(res.content)de_res = base64.b64decode(res.content)print(json.loads(de_res))

3、数据库操作与断言

1)接口测试响应验证

如何在测试过程中验证接口没有 Bug?

通过接口响应值; 通过查询数据库信息辅助验证;

2)接口测试数据清理

自动化测试中会产生大量的脏数据,该如何清理?

通过调用delete接口删除 自动化测试使用干净的测试环境,每次自动化测试完成后,还原数据。

3)数据库操作注意事项

直接对数据库操作是非常危险的行为 权限管理严格的公司对数据库权限给的很低 表结构复杂,随便删除数据会影响功能异常,甚至会出现系统异常。

4)接口自动化测试常用的数据库操作

连接与配置 查询数据与断言

数据库封装(Python):

封装数据库配置 封装 sql 查询操作 调用方法执行 sql 语句

class Mysql:@classmethoddef connect(cls):mysql_info = {"host": "litemall.hogwarts.ceshiren.com","port": 13306,"user": "test","password": "test123456","database": "litemall","charset": "utf8mb4"}conn = pymysql.Connect(**mysql_info)return conn@classmethoddef execute(cls, sql):cnn = cls.connect()sor = cnn.cursor()sor.execute(sql)res = sor.fetchall()sor.close()cnn.close()return res

数据库断言

def test_cart_add(self, good_sn='CC102101'):"""测试添加购物车功能"""with allure.step("获取商品的id"):ids = self.good.id(good_sn)with allure.step("获取商品的good_id和product_id"):good_id = ids[0]product_id = ids[1]sql = f"""                 SELECT number FROM litemall_cart where goods_sn='{good_sn}' and goods_id='{good_id}'"""good_num1 = Mysql.execute(sql)[0][0]print(good_num1)with allure.step("添加商品到购物车"):print(self.cart.add(good_id, product_id))good_num2 = Mysql.execute(sql)[0][0]print(good_num2)assert good_num2 - good_num1 == 1

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

相关文章

Java随记

Java java保留两位小数 1、使用String.format()方法: public static void stringFormatdecimalFormatKeepTwoDecimalPlaces(){double number 3.1415926;String result String.format("%.2f", number);System.out.println(result);}输出:3…

Large Language Models areVisual Reasoning Coordinators

目录 一、论文速读 1.1 摘要 1.2 论文概要总结 二、论文精度 2.1 论文试图解决什么问题? 2.2 论文中提到的解决方案之关键是什么? 2.3 用于定量评估的数据集是什么?代码有没有开源? 2.4 这篇论文到底有什么贡献&#xff1…

第十五章 : Spring Boot 集成MyBatis 多种方式

第十五章 : Spring Boot 集成MyBatis 方式 前言 本章知识重点:Spring Boot集成MyBatis的两种方式:注解方式和配置文件集成方式,重点推荐一款脚手架工具-mybatis-plus3以及如何在Idea中集成与应用;大大提高了开发效率,代码更加规范和简洁。 Spring Boot数据访问概述 在…

振弦采集仪助力岩土工程质量控制

振弦采集仪助力岩土工程质量控制 随着工程建设规模越来越大,建筑结构的安全性和稳定性越来越成为人们所关注的焦点。岩土工程在工程建设中占据着非常重要的地位,岩土工程质量控制更是至关重要。而振弦采集仪作为一种先进的检测设备,正得到越…

[PyTorch][chapter 5][李宏毅深度学习][Classification]

前言: 这章节主要讲解常用的分类器原理.分类主要是要找到一个映射函数 比如垃圾邮件分类 : c0, 垃圾邮件 c1 正常邮件 主要应用场景: 垃圾邮件分类,手写数字识别,金融信用评估. 这里面简单了解一下,很少用 目录: 1: …

还记得当初自己为什么选择计算机?

还记得当初自己为什么选择计算机? 当初你问我为什么选择计算机,我笑着回答:“因为我梦想成为神奇的码农!我想像编织魔法一样编写程序,创造出炫酷的虚拟世界!”谁知道,我刚入门的那天&#xff0…

离线数仓构建案例一

数据采集 日志数据(文件)到Kafka 自己写个程序模拟一些用户的行为数据,这些数据存在一个文件夹中。 接着使用flume监控采集这些文件,然后发送给kafka中待消费。 1、flume采集配置文件 监控文件将数据发给kafka的flume配置文件…

STM32——定时器Timer

定时器工作原理 软件定时 缺点:不精确、占用 CPU 资源 void Delay500ms() //11.0592MHz {unsigned char i, j, k;_nop_();i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i); } 使用精准的时基,通过硬件的方式,实现定时功…

Linux---访问NFS存储及自动挂载

本章主要介绍NFS客户端的使用 创建NFS服务器并通过NFS共享一个目录在客户端上访问NFS共享的目录自动挂载的配置和使用 访问NFS存储 前面介绍了本地存储,本章就来介绍如何使用网络上的存储设备。NFS即网络文件系统, 所实现的是 Linux 和 Linux 之间的共…

TypeScript中泛型函数

一.概览 此前,对泛型有了整体的概览,详见TypeScript中的泛型,后面的系列会详细地介绍TypeScript的泛型。此篇文章主要介绍泛型函数 二. 泛型函数 泛型是类型不明确的数据类型,在定义时,接收泛指的数据类型&#xff…

易点易动:颠覆固定资产用量管理,实现高效精准的企业固定资产管理

固定资产用量管理是企业日常运营中不可或缺的一环。然而,传统的人工管理方式面临着时间成本高、数据不准确、难以监控等问题。为了解决这些挑战,易点易动应运而生,它是一款先进的资产管理系统,能够帮助企业实现高效精准的固定资产…

【Java项目管理工具】Maven

Maven 文章目录 Maven一、简介二、安装和配置三、GAVP四、IDEA Maven Java Web工程五、插件、命令、生命周期六、依赖配置七、构建配置八、依赖传递与依赖冲突九、Maven工程继承和聚合关系9.1 工程继承关系9.2 工程聚合关系 十、Maven私服10.1 Nexus下载安装10.2 Nexus上的各种…

案例054:基于微信的追星小程序

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

linux的权限741

741权限 在 Linux 中,文件和目录的权限由三组权限来定义,分别是所有者(Owner)、所属组(Group)和其他用户(Others)。每一组权限又分为读(Read)、写&#xff0…

c++函数模板STL详解

函数模板 函数模板语法 所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。 凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数&#xf…

Java安全之Commons Collections5

CC5分析 import org.apache.commons.collections.Transformer; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; import org.apache.commons.collections.functors.InvokerTransfo…

基于ssm绿色农产品推广应用网站论文

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

Cloudways和SiteGround哪个更好?

当提及WordPress托管服务提供商时,人们常常会拿Cloudways和SiteGround做比较。Cloudways作为备受欢迎的品牌,而SiteGround则是业界的老牌巨头。它们之间主要的区别在于服务范围。SiteGround提供广泛的托管服务,包括Web托管、WordPress托管、W…

Android 11.0 屏蔽保护听力对话框

Android 11.0 屏蔽保护听力对话框 最近收到客户反馈提到当设备音量调高到一定程度时会弹出提示保护听力的对话框,影响了操作使用,需要将弹出的提示保护听力对话框屏蔽掉,具体修改参照如下: /vendor/mediatek/proprietary/packag…

Flex布局 实现元素排列 4列变2列?

电脑版显示为一行有四列. 手机版显示为一行两列 thinkphp 的 html <section class"nutshell"style""><div class"grid"><div class"section-title center anim">{$typecont.enname}</div><div class"…