Python3接口测试框架的整体布局与设计

news2024/9/20 20:18:19

实战项目整体布局概览

本实战项目基本的层级结构如下:

习惯性的命名规则,把所有的辅助类py文件放在commonsrc这个包里面,如数据库配置封装文件、接口配置封装文件等;辅助类py文件在整个项目中初期代码写好后一般是不会去大范围修改的,即使产品需求变更,这一块也是影响非常小的。以下就commonsrc包做一个概述性的讲解:

1、common.py

这个文件里面主要放的是一些公共的方法,如文件的读写,url的配置等,在整个项目中占比较大的角色。

2、configDB.py

文件中对数据库方法进行了封装,如游标,数据库连接。这样在接口测试核对数据时可能用到数据空做了一些预防。

3、configEmail.py

这里面主要是对邮件格式,邮件内容,邮件发送接收,邮件服务配置做了一些封装,便于后续的调用。

4、confiHttp.py

文件里有基本的post、get方法的封装,对post和get请求的参数,请求方法做了一些定义,当然如果想增加其他请求如put等也是可以的,这里面用到了一个requests库。

5、Log.py

这个文件是日志打印,基本上所有框架的源码这一块基本是没有什么变化的,就是打印一些log,以及log输出的表达方式。

6、HTMLTestRunner.py

测试报告,其实他是第三方包,unittest里一起的测试报告,本次把他放在这里是应为python3中,需要我们自己去对测试报告做一下自定义才能使用。具体的方法在我前面的书籍中也讲过。

7、其它

不做概述,只是一种调试增加而已。如写一下common方法是会新建一个文件写上代码作为调试,当代码完好后才移植到common.py里
公用类log.py和common.py也是放在了commonsrc.py,上述已经讲解不在累述。脚本主要是放在testcase这个包里面,脚本以test开头存放。其他的文件夹存放的是一些log输出和测试结果,文件等。runAll.py是整个测试的一键测试入口,里面主要定义了测试的脚本顺序,测试的数据调用等。

实战项目脚本调用方式

接口自动化测试,先得有接口的url,接口请求和接口期望返回参数,接口数据的断言核对等这一套流程,然后我们编写代码时才从这套流程中去发掘,一步一步的形成一个完好的测试脚本。接下来我们一个一个的去描述:

接口的url

接口的url主要是从接口配置源码ConfigHttp.py中的set_url(self.url)获取,写脚本的时候传入url,在这个方法里会自动组成一条完整的可供请求的接口链接。

接口请求

接口请求分请求头、请求body和请求方式,请求头采用的是从接口配置源码ConfigHttp.py中的set_headers(self.header)获取,脚本需要给方法传参header。请求的body是由从接口配置源码ConfigHttp.py中的set_params(self.param)、set_data(self.data)获取,同样需要在脚本里传入需要的请求体,请求方式这里主要还是从接口配置源码ConfigHttp.py中的get(self)、post(self)获取,测试脚本直接调用即可

接口期望返回的参数

返回的参数都是接口文档会有说明的,每条用例一个期望返回参数,本项目中有两种方法来存放期望返回参数,一个是放在excel里,一个是放在yaml文件里面。具体的获取方法在脚本编写这一块会有所体现。

接口数据断言核对

这部分的断言也是有两种一种简单的,一种叫难的。简单的断言指的是对msg和code接口返回的状态码较为简单的做一次断言,这部分的源码是脚本里直接写的以下为示例:

较为复杂和完整的断言是放在common文件里的check_result(response={}, hope_response={}, value=0)方法,对键值对都做了比较和输出,以及差异输出,源码如下:


实际接口测试入口

本项目的文件中新建了类和一些方法,在结尾处出现如下代码:

if __name__ == '__main__':
    obj = AllTest()
    obj.run()

这段代码的说明一下这个是调试代码,直接运行此文件来找到代码问题,其中 **if name == ‘main’😗*告诉我们这个文件是可执行的文件。如果没有这段代码就像只是单纯的作为其他执行文件的调用文件。每一个函数每一类不管有没有返回数据,都需要用调试来使得代码更加完善,pycharm也提供了断点调试的功能,配合起来是代码写的更加完美。
项目中你会发现每一个文件都可以单独执行,这个是因为调试需要,那么在测试中什么是我们的接口测试主入口呢?runAll.py这个文件就是。

文章原创首发于微信公众号 软件测试微课堂

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

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

相关文章

Character.AI的联合创始人Noam Shazeer将加入谷歌;又一个开源平替llamacoder;和mem0一样的动态记忆框架

✨ 1: Character.AI 创始人回归google Character.AI的联合创始人Noam Shazeer将加入谷歌 Character.AI的联合创始人Noam Shazeer和Daniel De Freitas离开公司,重新加入Google旗下的DeepMind研究团队。Google签署了一项非独占性协议,使用Character.AI的…

Java8新特性(二) Stream与Optional详解

Java8新特性(二) Stream与Optional详解 一. Stream流 1. Stream概述 1.1 基本概念 Stream(java.util.stream) 是Java 8中新增的一种抽象流式接口,主要用于配合Lambda表达式提高批量数据的计算和处理效率。Stream不是…

远程控制电脑的正确姿势,3大神器助你秒变技术达人!

现在的生活节奏快得跟打鼓似的,不管是在家工作、帮朋友修电脑,还是想控制家里的播放器放个电影,远程控制电脑这事儿越来越重要了。有没有遇到过想用电脑却够不着的尴尬?别急,今天咱们就来看看怎么搞定远程控制电脑&…

快瞳宠物AI识别赋能养宠智能设备,让品牌大有可为

随着国内养宠市场的不断完善与成熟,许多家庭养宠理念从“健康养宠”向“育儿式养宠”的升级,国内宠物行业向高质量发展阶段迈进,宠物经济增长迅猛。报告显示,2024年宠物智能设备货架电商年销售额达2.5亿,增速近30%。内…

记录一次学习过程(msf、cs的使用、横向渗透等等)

目录 用python搭建一个简单的web服务器 代码解释 MSF msfvenom 功能 用途 查看payloads列表 msfconsole 功能 用途 msfvenom和msfconsole配合使用 来个例子 msf会话中用到的一些命令 在windows中net user用法 列出所有用户账户 显示单个用户账户信息 创建用户账…

x-cmd mod | x jq - 轻量级的 JSON 处理工具

目录 简介使用语法参数子命令x jq openx jq repl 简介 jq 是一个轻量级的 JSON 处理工具&#xff0c;是由 Stephen Dolan 于 2012 年开发。 使用语法 x jq [SUB_COMMAND] <#n>参数 参数描述#n继承 jq 子命令或参数选项 子命令 名称描述x jq open用浏览器打开 jqplay…

Axure入门及快速上手的法宝元件库:解锁高效原型设计之旅

在当今快速迭代的数字产品时代&#xff0c;原型设计成为了连接产品创意与实现之间不可或缺的桥梁。Axure RP&#xff0c;作为一款强大的交互原型设计工具&#xff0c;凭借其易用性、灵活性和丰富的功能&#xff0c;成为了设计师和产品经理的首选。它不仅能够帮助用户快速创建高…

Vue3 + cropper 实现裁剪头像的功能(裁剪效果可实时预览、预览图可下载、预览图可上传到SpringBoot后端、附完整的示例代码和源代码)

文章目录 0. 前言1. 裁剪效果&#xff08;可实时预览&#xff09;2. 安装 cropper3. 引入 Vue Cropper3.1 局部引入&#xff08;推荐使用&#xff09;3.2 全局引入 4. 在代码中使用4.1 template部分4.2 script部分 5. 注意事项6. SpringBoot 后端接收图片6.1 UserController.ja…

无线蓝牙耳机哪个品牌好?甄选四款专业蓝牙耳机品牌推荐

随着市场上品牌和型号众多&#xff0c;挑选出最适合自己的蓝牙耳机却变成了一项不小的挑战&#xff0c;不同的用户有着不同的需求——有的人追求音质、有的人注重续航、有的人在意舒适度&#xff0c;还有的人看重的是设计与功能性&#xff0c;那么无线蓝牙耳机哪个品牌好&#…

springboot物流寄查系统-计算机毕业设计源码95192

目 录 1 绪论 1.1 研究背景 1.2选题背景 1.3论文结构与章节安排 2 springboot物流寄查系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2…

Maven实战(三)- Maven仓库

Maven实战&#xff08;三&#xff09;- Maven仓库 文章目录 Maven实战&#xff08;三&#xff09;- Maven仓库1.Maven仓库概念2.仓库布局3.仓库分类3.1.本地仓库3.2.远程仓库3.3.中央仓库3.4.私服 4.远程仓库的配置5.远程仓库认证6.部署构件至远程仓库7.从仓库解析依赖8.镜像 1…

牛客JS题(十九)继承

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 构造函数实现类ES6类的写法原型链的应用 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charset"utf-8" /></head><body><script type"text…

Python数值计算(17)——Hermite插值

这次介绍一下使用差商表构造Hermite多项式的方法。 前面介绍到了两种很经典的插值多项式&#xff0c;即Lagrange和Newton插值多项式&#xff0c;并在前一篇中阐述了如何通过Lagrange插值方式构造Hermite多项式&#xff0c;这次通过牛顿差商法构造Hermite多项式。 1. 数学原理 …

学生党蓝牙耳机哪个牌子好用性价比高?四大顶尖精品蓝牙耳机揭秘

近年来&#xff0c;市面上的蓝牙耳机品牌如雨后春笋般涌现&#xff0c;各大厂商纷纷跨界合作&#xff0c;推出外观时尚、设计新颖的产品&#xff0c;以吸引各位学生党的目光。然而&#xff0c;在这繁华背后&#xff0c;不少产品却忽视了音质、舒适度及适用性等核心要素&#xf…

2024年【广东省安全员A证第四批(主要负责人)】新版试题及广东省安全员A证第四批(主要负责人)考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 广东省安全员A证第四批&#xff08;主要负责人&#xff09;新版试题参考答案及广东省安全员A证第四批&#xff08;主要负责人&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及广东省安全员A证第四批&…

1. 什么是操作系统

文章目录 1.1 从功能上来看操作系统1.2 硬件资源 1.1 从功能上来看操作系统 对用户来说&#xff0c;操作系统是一个控制软件&#xff0c;可以用来管理应用程序&#xff0c;它可以限制不同的程序来占用的资源。对内部的软件来说&#xff0c;操作系统是一个管理外设和分配资源的…

LLM 大模型文档语义分块、微调数据集生成

1、LLM 大模型文档语义分块 参考: https://blog.csdn.net/m0_59596990/article/details/140280541 根据上下句的语义相关性,相关就组合成一个分块,不相关就当场两个快 语义模型用的bert-base-chinese: https://huggingface.co/google-bert/bert-base-chinese 代码: 对…

武汉流星汇聚:亚马逊赋能中国卖家全球化战略深化,业绩斐然赢未来

在全球电商的浩瀚星空中&#xff0c;亚马逊无疑是最耀眼的星辰之一&#xff0c;其强大的平台影响力和全球覆盖能力&#xff0c;为无数商家特别是中国卖家提供了前所未有的发展机遇。近年来&#xff0c;中国卖家在亚马逊平台上的表现尤为亮眼&#xff0c;不仅销量持续攀升&#…

Python面试宝典第26题:最长公共子序列

题目 一个字符串的子序列是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08;也可以不删除任何字符&#xff09;后组成的新字符串。比如&#xff1a;"ace" 是 "abcde" 的子序列&#xff0c;但 "…

基于redis实现优惠劵秒杀下单功能(结合黑马视频总结)

基础业务逻辑 初步实现 Override public Result seckillVoucher(Long voucherId) {// 1.查询优惠券SeckillVoucher voucher seckillVoucherService.getById(voucherId);// 2.判断秒杀是否开始if (voucher.getBeginTime().isAfter(LocalDateTime.now())) {// 尚未开始return R…