当前位置: 首页 > news >正文

如何快速实现接口自动化测试,常规接口断言封装实践

目录

前言:

一、框架设计思路

1. 封装请求方法

2. 断言封装

3. 接口封装

4. 接口统一管理

二、框架使用

三、总结


前言:

在当今互联网行业中,接口自动化测试已经成为了非常重要的测试手段之一。而在这个过程中,接口自动化框架的封装就显得尤为重要,因为它能够帮助我们提高测试效率和质量,而且对于长期的维护和扩展也会有很大的帮助。

在本篇文章中,将会介绍一个接口自动化框架封装项目实战,其主要目的是为了实现对于常规接口的断言封装,从而解决一些性能问题及提高接口自动化测试的效率。

一、框架设计思路

1. 封装请求方法

在封装接口测试框架的过程中,首先需要设计一个通用的请求方法。在这个项目中我们选择了Python的requests库来进行HTTP请求。基本的请求方法如下:

def request(method, url, data=None, json=None, headers=None):resp = requests.request(method=method,url=url,data=data,headers=headers,json=json,verify=False  # 忽略SSL证书)# 判断响应内容是否是json格式try:resp_data = json.loads(resp.text)except Exception:resp_data = resp.textreturn resp.status_code, resp_data

2. 断言封装

在接口测试过程中,断言是一个非常关键的部分,我们需要通过断言来判断接口的返回数据是否符合预期。然而,如果每个接口都需要单独编写断言代码,既不利于维护,也会影响测试效率。因此,我们需要对常见的接口返回数据进行断言封装,从而达到快速且准确的测试目的。

在本项目中,我们采用了PyHamcrest库来进行接口断言,该库提供了一些通用的断言方法,如equal_to, contains_string等。我们对PyHamcrest的部分方法进行了封装,具体代码如下:

from hamcrest import * def assert_equal(actual, expect):assert_that(actual, equal_to(expect))def assert_contain(actual, expect):assert_that(actual, contains_string(expect))

3. 接口封装

通过上述两个步骤的封装,我们就可以进行具体接口的封装,从而在测试时直接调用封装好的请求方法和断言方法,不仅提高了测试效率,同时也减少了重复劳动和代码维护成本。

接口封装实例:

class OrdersAPI(object):def __init__(self):self.base_url = 'https://api.test.com'self.headers = {'Content-Type': 'application/json'}def create_order(self, data):url = self.base_url + '/orders'resp_code, resp_data = request(method='POST',url=url,data=json.dumps(data),headers=self.headers)assert_equal(resp_code, 200)assert resp_data.get('order_id')return resp_data['order_id']

4. 接口统一管理

对于大型的系统或者复杂的业务场景,接口数量是非常庞大的,如果每个接口都单独写一个文件进行封装,很容易导致文件过多,不利于维护和管理。因此,我们需要对接口进行统一管理。在本项目中,我们采用了Python的unittest框架来进行接口测试用例编写和管理。

二、框架使用

通过上述的设计和封装,我们可以在测试用例中进行接口调用和断言,大幅提高测试效率。下面是示例代码:

class OrdersAPITest(unittest.TestCase):def setUp(self):self.api = OrdersAPI()def test_create_order(self):data = {'sku_id': 123456, 'quantity': 2}order_id = self.api.create_order(data)assert order_iddef tearDown(self):pass

在以上示例代码中,我们首先通过setUp方法初始化了OrdersAPI对象,然后在test_create_order方法中调用了create_order方法进行创建订单的操作,并进行了相关的断言。最后,在tearDown方法中我们进行必要的收尾操作。

三、总结

在本篇文章中,我们介绍了一个接口自动化框架封装的实战项目,主要包括请求方法、断言封装、接口封装和接口统一管理四部分内容,从而实现了对于常规接口的断言封装。通过这个项目,我们不仅能够提高测试效率和质量,还能够降低测试维护成本和重复劳动,是一个非常实用和具有参考价值的项目。

当然,在实际测试过程中,需要根据实际情况进行针对性的改进和优化,并且不断完善和扩展接口库,以满足不同的测试需求。希望大家能够结合自身的经验和实际场景,不断完善自己的接口自动化测试框架,让测试工作更加高效、准确和可靠。

  作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

获取方式:留言【自动化测试】即可获取
【自动化测试交流】:574737577(进群备注ccc)icon-default.png?t=N4HBhttp://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ShtVXS7M5uJOf-xrbWdy-Gajm7oI55qn&authKey=I9OrA0XPCA5wrwrgwHwjhCoPRsD2u8zrsPdejyPDcLE0LcvWrq%2FJOoZxo%2Bq44qqG&noverify=0&group_code=574737577

 

相关文章:

如何快速实现接口自动化测试,常规接口断言封装实践

目录 前言: 一、框架设计思路 1. 封装请求方法 2. 断言封装 3. 接口封装 4. 接口统一管理 二、框架使用 三、总结 前言: 在当今互联网行业中,接口自动化测试已经成为了非常重要的测试手段之一。而在这个过程中,接口自动化…...

java+nodejs+vue+python+php家教信息管理系统

任何网友都可以自由地查看、搜索、发布该家教信息平台的信息。该平台是区别于传统的家教中介的服务平台。学生可以免费查看网站上的家教信息,挑选适合自己的家教;教师可以免费查看网站上的需求信息,挑选适合自己的学生;学生可以发…...

课程分享:鸿蒙HarmonyOS系统及物联网开发实战课程(附课程视频及源码下载)

课程名称: 鸿蒙HarmonyOS系统及物联网开发实战课程 课程介绍: HarmonyOS 是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS 提出了基于同一套系统能力、适配多种终端形态的分布式理念&#xff0c…...

【数据结构】线性表之栈、队列

前言 前面两篇文章讲述了关于线性表中的顺序表与链表,这篇文章继续讲述线性表中的栈和队列。 这里讲述的两种线性表与前面的线性表不同,只允许在一端入数据,一段出数据,详细内容请看下面的文章。 顺序表与链表两篇文章的链接&…...

StringUtils.substring\[XX]()字符串截取方法总结

StringUtils.substring[XX]()字符串截取方法总结 StringUtils (Apache Commons Lang 3.12.0 API) 文章目录 StringUtils.substring\[XX]()字符串截取方法总结导入依赖方法介绍substring(String str, int start)substring(String str, int start, int end)substringAfter(String…...

SeaweedFs使用-通过http接口实现文件操作

通过http接口实现文件操作 SeaweedFs可通过filer的http接口/master中的http接口来进行文件上传 1.通过master的接口进行上传文件 通过各种方式进行请求接口:http://localhost:9333/submit, ip和端口号是master服务的信息。此接口通过post请求方式将文件的二进制流…...

成绩管理系统

系列文章 任务28 成绩管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试读入数据浏览全部信息增加学生信息保存数据删除学生信息修改学生…...

【MYSQL】事务的4大属性,对隔离级别的详细讲解

目录 1.原子性和持久性 1.1.手动提交事务 1.2.自动提交事务 1.3.事务的原理: 2.隔离性 1.读未提交(Read Uncommitted) 2.读提交(Read Committed) 3.可重复读 4.串行化 3.一致性 4.理解读提交和可重复读的实现…...

如何在宝塔面板后的阿里云服务器运行Flask项目并公网可以访问?

在你的服务器安装宝塔面板 宝塔面板是服务器运维管理系统 使用宝塔前: 手工输入命令安装各类软件,操作起来费时费力并且容易出错,而且需要记住很多Linux的命令,非常复杂。 使用宝塔后: 2分钟装好面板,一键…...

HTTP(九)-- response对象 -- 向页面响应数据

目录 1. 服务器输出字符数据到浏览器 1.1 获取字符输出流 1.2 实例演示:...

音视频windows安装ffmpeg6.0并使用vs调试源码笔记

建立在上一步,vs已经能够正常调试qt项目,可以实现: 1:qt可以使用mvsc (使用cdb)进行调试。 2:vs已经可以加载qt项目,借助vs进行调试。 本文目标:编译ffmpeg库&#xf…...

Midjourney|文心一格prompt教程[进阶篇]:Midjourney Prompt 高级参数、各版本差异、官方提供常见问题

Midjourney|文心一格prompt教程[进阶篇]:Midjourney Prompt 高级参数、各版本差异、官方提供常见问题 1.Midjourney Prompt 高级参数 Quality 图片质量是另一个我比较常用的属性,首先需要注意这个参数并不影响分辨率,并不改变分辨率&#x…...

什么是Java虚拟机(JVM)?

Java虚拟机(Java Virtual Machine,JVM)是Java平台的关键组成部分之一。它是一种虚拟的计算机,可以在计算机上运行Java字节码(即编译后的Java程序)。 JVM具有以下主要功能: 字节码执行&#xff…...

【HISI IC萌新虚拟项目】Package Process Unit模块整体方案·PART3

5. 模块方案说明 5.1CRG 模块方案说明 5.1.1简介 CRG 模块实现复位信号的滤抖功能,可滤除小于100ns的低电平复位毛刺,并对复位信号进行同步化处理。同时,对100MHz的输入时钟信号进行2分频,作为 CPU_IF模块和TEST_CORE模块的工作时钟。 5.1.2接口信号 信号位宽I/O描述...

分布式事务常见解决方案

分布式事务常见解决方案 一、事务介绍 事务是一系列的动作,它们综合在一起才是一个完的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。 1、单事务概念…...

061:cesium设置棋盘图材质(material-5)

第061个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置棋盘材质,请参考源代码,了解CheckerboardMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共89行)相关API参考:专栏目标…...

【AI Earth试玩】权限配置与openAPI调用工具库

前言 AI earth是阿里达摩院出的遥感云计算平台,我简单体验下来感觉像是GEE的python版本遥感深度学习计算平台,整体体验还是挺不错的,尤其是多分类的结果还是挺惊艳的。 平台提供工具箱和notebook两种模式,工具箱整个交互简单易用…...

Tomcat安装与使用

Tomcat 是HTTP服务器,用于使用HTTP协议。 1、下载Tomcat 下载链接:https://tomcat.apache.org/ 进入官网后,根据自己想要下载的版本进行下载,我这里选择下载的版本是Tomcat 8. 点击选择自己想要下载的对应版本,下载Z…...

大数据课程-学习二十四周总结

6.Hive函数 Hive的函数分为三类: 聚合函数、内置函数,表生成函数,聚合函数之前已经学习过了,接下来学习内置函数和表生成函数. 6.1.Hive的内置函数 6.1.1.数学函数 6.1.1.1. 取整函数: round 语法: round(double a) 返回值: BIG…...

【GPT科技系列】国内开发者调用openAI-API科技方法

1. 前言 openAI上线7个月了,但是随着openAI的约束越来越多,国内开发者想要使用openai的接口实现开发简直就是难上加难。那真的就没有办法了吗?no no no,CF解决一切不开心~ 2.准备工作 我们需要一个国际域名 注册cloudflare账号 …...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...