接口自动化测试框架

   

接口自动化测试框架:python+unittest/pytest+requests+ddt+openpyxl+pymysql+logging

框架设计思路数据驱动+结构分层(可读性、可维护性、可扩展性)
数据驱动将维护数据与代码分离,接口调用行为一致,针对不同的参数组合驱动不同的测试场景,减少代码冗余
结构分层

数据层

datas测试数据层

测试数据的支撑 data.xls

用于存放所有的测试数据,测试参数(可以使用excel,json,yaml,数据库来存储)

用例层用例的执行 test_register.py test_recharge.py

逻辑层

cases测试执行逻辑层

公用的方法的封装与提取 doexcle.py do_mysql.py http_requests.py logger.py等模块

,用于存放所有的测试用例类

configs配置层用于存放当前框架中的所有配置信息(使用不频繁,修改不频繁的数据
logs 日志层用于保存运行框架过程中产生的所有有效日志信息
reports报告层用于保存所有的测试报告文件(一般为html报告)
run.py用例启动文件使用套件加载用例,批量执行并生成报告
scripts 脚本封装层用于保存所有的操作封装模块(yaml,excel,log.mysql,requests,参数化等)
unittest/pytest定义一个测试用例类,具体的方法来维护测试用例的生命周期,测试场景行为,测试用例 前置场景,行为,期望结果,实际结果,断言方法,Setup teardown方法
Requests

接口调用 ,支持http请求的库,API 简洁,提供不同的http请求方法,支持session,cookies

Requests请求库,来向接口发起请求,Requests接口请求

DDT:数据驱动

,ddt 类装饰器,data 测试方法装饰器 unpack解包可迭代的数据类型

普通用户,数据库,配置文件—(基础数据)

Openpyxl

 数据管理 excel管理数据,使用openpyxl模块来进行excel数据的读和写(excle,csv, json, yaml, txt都可以管理测试数据)

用 Openpyxl来处理excel,存储测试数据(用例数据)

Pymysql

:数据库交互,数据校验Pymysql数据库效验

Pymysql来连接mysql数据库,执行sql数据,进行数据效验

eval/json:数据格式的转换 Eval将python支持的格式转换成对应的格式
logging

:日志处理, 统一日志输出格式,渠道,级别,执行结果的记录,便于定位问题

使用logging模块来创建日志器 ,记录项目中的日志信息

Jenkins持续集成

1、测试框架unittest 

  •  提供不同范围的setUp(测试准备)和tearDown(测试清理)方法
setUp(前置测试准备)

用于测试用例执行前的初始化工作

访问数据库(增删改查操作)、登陆浏览器

tearDown(后置测试清理)

用于测试用例执行后的清理工作

关闭数据库(增删改查操作)、关闭浏览器

  • 提供丰富的断言方法

2、接口请求requests

requests模块主要用于发送http请求,做接口自动化;

requests.get(url, params, args)

在get请求中使用params参数,会自动把参数key、value拼接在url后;

requests.post(url, data, json, args)

data传递的是content-type:application/x-www-from-urlencoded,表单形式的数据

格式:a=1&b=2

json传递的是content-type:application/json,json格式的数据

格式:{“a”: 1, “b”: 2}

data只能传简单的只有键值对的dict或者是str格式

json一般只能传dict格式   

json.dumps(data)      序列化把字典格式的数据转换成str格式
json.loads(data)        反序列化把str格式转换成字典格式

3、数据管理yaml

pyyaml来配置文件(configparse,pyyaml)

4、测试报告allure

5、日志管理loguru

用的logging这个python自带模块,根据日志的不同级别,info,debug,warning,error,critical针对性的写了一个日志类,设置好日志输出格式,将日志指定保 存到.txt结尾的文本文件里面

6、数据库pymysql

7、数据参数化parameterized

8、配置文件configparser

9、数据缓存cacheout

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉——使用OpenCV GrabCut算法从图像中移除背景

GrabCut算法 GrabCut算法是一种用于图像前景提取的技术,由Carsten Rother、Vladimir Kolmogorov和Andrew Blake三位来自英国剑桥微软研究院的研究人员共同开发。该技术的核心目标是在用户进行最少交互操作的情况下,自动从图像中分割出前景对象。 在Gra…

直流有刷电机入门

文章目录 123455.25.3 1 2 电刷 材质是 石墨 3 130马达 就几毛钱 几块钱这学的就是减速电机P MAX一定 pf*v 降低速度 扭矩就会大 4 还有空载电流 过大负载 时 有堵转电流 (可分析电流 来看电机工作状态)RPM 转每分钟 5 5.2 这的线圈 是简化后的转子绕组…

Ubuntu终端常用指令

cat cat 读取文件的内容 1、ls 一、 1、ll 显示当前目录下文件的详细信息,包括读写权限,文件大小,文件生成日期等(若想按照更改的时间先后排序,则需加-t参数,按时间降序(最新修改的时间排在最前)执行: $ ll -t, 按时间升序执行: $ ll -t | tac): ll 2、查看当前所处路径(完整…

服务器数据恢复—服务器重装系统导致XFS分区丢失的数据恢复案例

服务器数据恢复环境: 一台服务器MD1200磁盘柜,通过raid卡将15块磁盘组建成一组raid5磁盘阵列。raid5阵列分配了2个lun,操作系统层面对lun进行分区:1个分区采用LVM扩容方式加入到了root_lv中,其余分区格式化为XFS文件系…

大数据时代,保护个人隐私小Tips Get 起来!

随着大数据时代的到来,我们的隐私正处于越来越易被侵犯的风险中。在各种社交媒体和信息共享平台上,我们需要输入各种个人信息,而这些信息可能被不法分子盗取,甚至被用来进行欺诈行为。在如今的大数据时代,保护个人隐私…

元宇宙中的DAPP:你了解多少?

元宇宙是什么?这是一个在当今科技圈炙手可热的话题。而在元宇宙中,DAPP起着至关重要的角色,它作为连接现实世界与虚拟世界的桥梁,为未来的数字世界开启了一个全新的篇章。 一、元宇宙:一个虚拟的数字世界 元宇宙是一…

【JavaWeb】Day51.Mybatis动态SQL(一)

什么是动态SQL 在页面原型中,列表上方的条件是动态的,是可以不传递的,也可以只传递其中的1个或者2个或者全部。 而在我们刚才编写的SQL语句中,我们会看到,我们将三个条件直接写死了。 如果页面只传递了参数姓名name 字…

【麒麟(Linux)系统远程连接到windows系统并进行文件传输】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言使用步骤总结 前言 一般来说,windows自带远程桌面,使用的RDP协议,Linux上支持RDP协议的软件很多,常用的是Remmi…

Java 网络编程之TCP(五):分析服务端注册OP_WRITE写数据的各种场景(二)

接上文 二、注册OP_WRITE写数据 服务端代码: import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectableChannel; import java.nio.channels.SelectionKey; import java.nio.channels.S…

【cf】Codeforces Round 941(Div.2)题解 A - D

前三题出的最快的一次&#xff0c;但是d没出 A. Card Exchange 只要有一种颜色大于等于 k&#xff0c;那就是 k-1&#xff0c;否则就是 n #include <bits/stdc.h>using namespace std;#define int long long using i64 long long;typedef pair<int, int> PII;…

CONSOB 又下令封锁5个未经授权的投资网站,总数达1065

FX110讯&#xff1a;意大利金融市场监管局 CONSOB 已下令关闭 5 个非法提供金融服务/金融产品的网站。自2019年7月CONSOB有权下令封锁欺诈性金融网站以来&#xff0c;被封禁的网站数量已升至1065个。 以下是 CONSOB 下令新屏蔽的 5个网站&#xff1a; “Luno Invest” Vantage …

C#基础:WPF中常见控件的布局基础

一、用ViewBox实现放缩控件不变 二、布局代码 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"Title"MainWindow"…

将静态资源解析成组件使用的库

vite版本的vite-plugin-svgr vite-plugin-svgr - npm 使用

排序试题解析(二)

8.4.3 01.在以下排序算法中&#xff0c;每次从未排序的记录中选取最小关键字的记录&#xff0c;加入已排序记录的 末尾&#xff0c;该排序算法是( A ). A.简单选择排序 B.冒泡排序 C.堆排序 D.直接插入排序 02&#xff0e;简单选择排序算法的比较次数和移动次数分别为( C )。…

MongoDB的安装(Linux环境)

登录到Linux服务器执行 lsb_release -a &#xff0c;即可得知服务器的版本信息为&#xff1a;CentOS 7。 # CentOS安装lsb_release包 [rootlinux100 ~]# sudo yum install redhat-lsb# 查看Linux版本 [rootlinux100 ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-…

Signed的本质和作用

前言 Verilog中的signed是一个很多人用不好&#xff0c;或者说不太愿意用的一个语法。因为不熟悉它的机制&#xff0c;所以经常会导致运算结果莫名奇妙地出错。其实了解了signed以后&#xff0c;很多时候用起来还是挺方便的。 signed的使用方法主要有两种&#xff0c;其中一种…

【C语言】动态内存分配(一)

目录 1.为什么要有动态内存分配 2.malloc和free 2.1malloc 2.2free 1.为什么要有动态内存分配 我们已经掌握的内存开辟方式有: 但是上述的开辟空间的方式有两个特点: ⭐空间开辟大小是固定的。 ⭐数组在申明的时候&#xff0c;必须指定数组的长度&#xff0c;数组空间一旦…

网络安全与密码学

一、密码学概述 一、 密码学是一门研究信息安全保密的学科&#xff0c;主要涉及对信息进行加密、解密以及相关的安全技术和理论。 它通过使用各种加密算法和技术&#xff0c;将明文信息转换为密文&#xff0c;以确保信息在传输和存储过程中的保密性、完整性和真实性。密码学在…

【Day1】【React学习笔记二】JSX基础

1 概念和本质 Babel官网 2 高频使用场景 2.1 JSX中使用JS表达式 2.2 JSX中实现列表渲染

LeetCode 面试题 17.08 —— 马戏团人塔

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 首先&#xff0c;我们对人的身高按照从小到大排序&#xff0c;特别注意&#xff0c;对于身高相等的人&#xff0c;要按照体重从高到低排序。这时候&#xff0c;序列已经满足了在上面的人要比下面的人矮一点&#…
最新文章