Aip接口自动化测试框架pytest+allure+request+jsonpath+excle

news/2024/5/4 9:38:05/文章来源:https://blog.csdn.net/qq_42846555/article/details/126974870

Aip接口自动化测试框架pytest+allure+request+jsonpath+excle

介绍

Aip接口自动化测试python+pytest+allure+request+jsonpath+excle,一个支持仅编辑Excle就可实现的接口自动化测试框架。
1.编辑Excle做接口数据驱动的数据源
2.接口上下游数据依赖处理
3.Excel执行函数获取随机值做新增接口数据
4.数据库查询断言
5.数据库初始化备份恢复
6.使用pytest+allure框架
7.测试完成后打包allure报告为zip包通过邮件发送

在这里插入图片描述
在这里插入图片描述

软件架构

软件架构说明

项目结构:   
├─common    #公共模块类      
│  │  all_path.py  #定义文件路径      
│  │  api_request.py   #发送请求      
│  │  assert_api.py    #请求断言      
│  │  Bak_Rec_DB.py    #备份恢复操作逻辑      
│  │  condition.py     #跳过用例逻辑      
│  │  condition_b.py   #跳过用例逻辑      
│  │  db.py             #数据库读取操作      
│  │  exchange_data.py  #接口参数的数据替换和提取      
│  │  logger.py         #系统日志打印      
│  │  loggers.py        #系统日志打印      
│  │  logger_bak.py     #系统日志打印      
│  │  operation_excle.py #读取写入excel      
│  │  read_file.py      #读取配置文件yaml      
│  │  RemoteServe.py     #远程链接SSH ftp      
│  │  send_email.py     #发送邮件      
│  │__init__.py      
│
├─config  #配置文件和相关资源      1.jpg      
│      3.jpg      
│      config.yaml            
│      mydb.sql      
│      mydb_bak.sql      
│      Start_server.bat      
│      
├─data   #测试数据用例表格      
│      case_data.xlsx      
│      
├─logs  #日志打印文件      20220921.log      
│      __init__.py      
│      
├─report_zip  #测试完成后测试报告压缩包发送邮件      
│      allure-report.zip      
│      __init__.py      
│      
├─target   #运行测试保持的测试报告路径      
├─test_caes   #测试用例文件夹      
│  │  test_001.py  #执行测试用例      
│  └─__init__.py      
│      
│─解析    #解析框架重要的模块      
│        Faker库造测试数据.py      
│        flask开发2个http接口.py      
│        te_001.py      
│        te_09.py      
│        参数依赖01-jsonpath提取参数.py      
│        参数依赖02-locals()获取本地变量 及exec()执行字符串中的代码.py      
│        参数依赖03-Template 使用,替换参数.py      
│        参数依赖04-框架中替换参数及执行字符串中方法取值.py      
│        发送请求01-get方法中url参数拼接和写到请求体中的理解.py      
│        发送请求02-请求参类型params,json,data 含义.py      
│        发送请求03-理解两种发送请求方法.py      
│        发送请求04-封装请求参数转化的理解.py      
│        备份恢复sql-FTP上传文件.py      
│        备份恢复sql-ssh执行命令.py      
│        继承方法以及传参.py      
│        邮件.py      
│      
│  conftest.py  #pytest conftest      
│  info.txt    #项目结构      
│  LICENSE      
│  README.md   #项目说明      
│  requirements.txt #项目依赖            
│  requirements_all.txt  #本地环境依赖      
│  run.py   #运行入口      
│  搭建服务器说明.txt  #  搭建接口服务说明      

在这里插入图片描述

安装教程

  1. python10 需要安装pytest==7.1.3
  2. 安装依赖环境 pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  3. 安装allrue报告allure-2.18.1.zip
  4. 安装java环境,allure需要java环境

使用说明

  1. 根据搭建后台服务说明搭建服务

    1. 源码地址:https://gitee.com/wBekvam/vueShop-api-server
    2. 文件中配置数据库 /config/default.json 
    3. 导入数据库 db/mysdb.sql
    4. 项目所在主目录下设置淘宝镜像:npm config set registry https://registry.npm.taobao.org安装依赖: npm install启动项目 :node app.js
    5.接口文档
    https://gitee.com/wBekvam/vueShop-api-server/blob/master/api%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3.md
    6.登录接口
    http://127.0.0.1:8888/api/private/v1/login
    {
    "username": "admin",
    "password": "123456"
    }
  2. 配置config\comfg.yaml参数

    server:# 本地接口服务test: http://192.168.1.15:8888/api/private/v1dev: http://127.0.0.1:8888/api/private/v1
    severity:case_severity: ["P1","P2","P3","P4"]#用例等级 "["P1","P2","P3","P4","P5"]"  设置需要测试用例等级cor_rel_case_severity: #用例等级和allure报告优先级的对应关系P1: blockerP2: criticalP3: normalP4: minorP5: trivial# 基准的请求头信息
    request_headers: {}
    file_path:test_case: ./data/case_data.xlsxreport: target/log: log/run{time}.logemail:# 发件人邮箱user:  huo***@163.com# 发件人邮箱授权码password:  DY***XZMHK# 邮箱hosthost:  smtp.163.comcontents:  解压allure-report.zip(接口测试报告)后,进入解压目录,运行Start_server.bat(需要有python环境),在浏览器输入http://127.0.0.1:5188/allure-report 即可查看测试报告。出现“Serving HTTP on 0.0.0.0 port 5188 (http://0.0.0.0:5188/) ...”表示服务启动完成,可以输入 http://127.0.0.1:5188/allure-report 地址查看报告# 收件人邮箱addressees:  ["397135766@qq.com", "1***18@qq.com"]title:  接口自动化测试报告(见附件)# 附件enclosures: ./report_zip/allure-report.zip# 数据库校验- mysql
    database:#host: "192.168.1.183" #localhost  127.0.0.1host: "127.0.0.1" #localhost  127.0.0.1port: 3306user: root# 不用''会被解析成int类型数据password: rootdb_name:  mydbcharset:  utf8mb4# 数据库所在的服务器电脑登录账号ssh_server:port: 22username: rootpassword: root# 私有密钥文件路径private_key_file: ''# 私钥密码privat_passowrd: ''# 如果使用的docker容器部署mysql服务,需要传入mysql的容器id/namemysql_container:# 数据库备份文件导出的本地路径, 需要保证存在该文件夹sql_data_file: ./backup_sqls/
    
  3. 配置数据库查询断言和备份恢复
    数据库查询断言配置:test_caes/test_001.py

    import pytest,allurefrom common.assert_api import AssertApi
    from common.operation_excle import operation_excle
    from common.api_request import Api_Request
    from common.read_file import ReadFileSheet=operation_excle.read_excel(ReadFile.read_config('$..test_case'), ReadFile.read_config('$..case_severity'))class Test():#需要执行sql查询断言时test_001(self,case,get_db),参数中添加get_db#不需要执行sql查询断言时test_001(self,case),参数中去掉get_db@pytest.mark.parametrize("case",Sheet)def test_001(self,case,get_db):#,get_db response=(Api_Request.api_data(case))#需要执行sql查询断言时,参数中添加get_db#不需要执行sql查询断言时,参数中去掉get_dbassert AssertApi().assert_api(response,case,get_db)#,get_db

    备份恢复数据库:conftest.py
    autouse=False 为True时开启数据库备份恢复功能,为False时不开启备份恢复功能

    #备份恢复数据库
    @pytest.fixture(scope='session',autouse=False)#False True   autouse=False 为True时开启数据库备份恢复功能,为False时不开启备份恢复功能
    def BakRecDB():#获取配置文件中的远程服务器和数据库参数host = ReadFile.read_config('$.database.host')ssh_port = ReadFile.read_config('$.database.ssh_server.port')ssh_user = ReadFile.read_config('$.database.ssh_server.username')ssh_pwd = ReadFile.read_config('$.database.ssh_server.password')sql_data_file = ReadFile.read_config('$.database.ssh_server.sql_data_file')BR=BakRecDB(host=host, port=ssh_port, username=ssh_user, password=ssh_pwd) #初始化链接服务器BR.backups_sql()  # 链接ssh远程访问,上传测试sql数据,备份当前数据库,导入测试sql库,yieldBR.recovery_sql()  # 恢复测试前sql数据,关闭ssh链接
  4. 运行run.py

    import pytest,shutil,subprocess
    from shutil import copy
    from common.read_file import ReadFile
    from common.send_email import EmailServe
    from common.all_path import targetPath,Start_server_batdef run():setting = ReadFile.read_config('$.email') #获取邮件相关配置信息try:shutil.rmtree('./target') #删除allure历史数据except:passpytest.main(['./test_caes','-vs',"--alluredir","target/allure-results"])#pytest测试框架主程序运行allure_html = 'allure generate ./target/allure-results -o ./target/allure-report --clean'  # 生成allure的html报告subprocess.call(allure_html, shell=True)  # 生成allure的html报告copy(Start_server_bat, targetPath) #拷贝 启动服务器脚本(config/Start_server.bat),由config目录拷贝到target目录下进行压缩打包发送邮件Files_path='./target'#压缩打包的目录EmailServe.send_email(setting,Files_path) #发送邮件if __name__ == '__main__':run()
  5. 查看allure报告
    target/allue-report/index.html pycharm中右击 Run"index.html"
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

https://gitee.com/HP_mojin/pytest_allure_request_20220811 来了请点个 Star,谢谢!!

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

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

相关文章

对集合、复杂度以及泛型的认识

文章目录 一、集合框架是什么?二、复杂度 1.时间复杂度2.空间复杂度三、泛型一、集合框架是什么? Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 …

linux使用nginx-gridfs实现文件服务

一:nginx第三方模块用什么命令,--addmongodb 二:怎么样装mongodb 三:怎么上传一个图片 四:怎么样去访问这个图片 三方模块;它不是nginx的,就是在源码包编译nginx的时候,把第三方…

IJCAI 2022 | 使用陈述句进行视觉问答的Prompt Tuning

©PaperWeekly 原创 作者 | 武祥宇单位 | 南京理工大学博士生研究方向 | 多模态学习论文标题:Declaration-based Prompt Tuning for Visual Question Answering收录会议:IJCAI 2022论文链接:https://arxiv.org/abs/2205.02456代码链接&a…

python基于django的高校教师科研成果管理系统

长期以来,院校的科研水平和科研规模一直反映着我国科研技术水平技术含量,随着现代科技的日益发展,各个院校的科研活动和科研能力已成为反映高校综合实力重要指标,而随着高校专业类别的增加,教师科研领域范围扩大&#…

GreenPlum列存解密

GreenPlum支持列式存储。叫做AOCO表。那么AOCO列存是如何管理列存文件?如何实现MVCC?是否支持索引,若支持如何实现的呢?下面我们介绍下AOCO的实现机制。1、存储结构如上图所示,列存每一列单独存储一个文件。上面一个表…

文件管理命令和find命令

文件管理命令和find命令 stat命令 查看文件状态 每个文件有三个时间戳: access time访问时间,atime,读取文件内容modify time修性时间, mtime,改变文件内容change time改变时间,ctime,元数据发生改变场景是:上传了WebShell,避…

MySQL数据误删恢复操作

目录记录一次不小心删除生产数据偷偷恢复解决方案 模拟数据删除 记录下操作时间,2022-09-21下午5点左右 通过show variables like %datadir%查看binlog存放目录目录 通过show master status;查看当前binlog的记录文件 查看mysqlbinlog工具目录,需要通过此…

ANYCUBIC Photon Mono 4K光固化打印机快速上手(多次试错的经验积累)

变更记录 记录每次修订的内容,方便追溯。 版本号作者修订内容发布日期1.1Zeeland优化打印机的最佳模式内容2022年9月21日 23:41:581.0Zeeland完善基本文档2022年2月14日 19:33:52 1. 简介 笔者前期使用ANYCUBIC Photon Mono 4K光固化打印机失败了很多次&#xff0c…

Vue3——压缩字体font-spider,完美解决字体压缩后会出现字体消失现象

Vue项目打包字体完整版教程 如果打包的时候字体太大,可以选择压缩字体进行处理 打包前: 打包后: 可以看到,区别还是很明显的,下面是使用方法 这里可以使用字蛛font-spider来进行压缩 字蛛font-spider npm install font-spide…

C 语言避坑指南

文章目录👉引言💎C 避坑指南一、基础|基本常识类1 运算符类型2 占位符|格式化问题3 输入输出问题二、错题 | 程序语句类三、进阶 | 指针与函数四、进阶 | 结构体及宏定义👉引言💎 学习的最大理由是想摆脱平庸,早一天就…

linux 中 date +%s 获取1970年以来的秒数

001、(base) [root@PC1 home]# date +%s 1663810406 (base) [root@PC1 home]# date +%s 1663810410 date +%s //从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数(时间戳)参考:https://zhidao.baidu.com/question/490735500497375812.html

EasyCVR接入宇视设备后通道显示的是目录,是什么原因?

EasyCVR平台基于云边端一体化架构,充分发挥视频接入、汇聚与管理、分发、智能分析、数据共享等能力,不断在多样化场景中落地应用,不仅涵盖传统行业的安防视频监控,还涉及到景区旅游、校园教育、社区、楼宇、智慧农业等领域的应用。感兴趣的用户可以前往演示平台进行体验或部…

Docker安装Jenkins

Docker安装Jenkins 准备工作 下载Jenkins镜像 docker pull jenkins/jenkins开始安装 创建需要挂载的本地文件夹 mkdir -p 路径/jenkens chmod 777 路径/jenkens创建并启动Container docker run -d -p 8080:8080 --name=jenkins -v 路径/jenkens/:/var/jenkins_home jenkins/jen…

vue 中利用js完成等比例缩放图片和点位跟着移动

需要等比例缩放的内容 html <div class="boxImg" ref="cont" style="position: absolute; top: 0; left: 0"><!-- 这里放上需要等比例缩放的内容 --> </div> 在vue中 methods 中写 methods: {updateScaleRatio(ImgObj, ma…

linux - 搭建部署ftp服务器

ftp 服务&#xff1a; 实现ftp功能的一个服务&#xff0c;安装vsftpd软件搭建一台ftp服务器 ftp协议&#xff1a; 文件传输协议 &#xff08;file transfer protocol&#xff09;&#xff0c;在不同的机器之间实现文件传输功能&#xff0c; 例如 视频文件下载&#xff0c;…

前端之html和css(2)

目录 一&#xff0c;html 1&#xff0c;文本相关标签 2&#xff0c;列表标签 3&#xff0c;图片标签 4&#xff0c;超链接 5&#xff0c;表格标签 table 6&#xff0c;表单 form 7&#xff0c;分区标签 二&#xff0c;css层叠样式表 1&#xff0c;css样式代码的三种引入…

【职场必备知识】一文搞懂五险一金(打工人必备)

社保局电话&#xff1a;12333五险一金非常重要的是&#xff1a;缴纳基数和缴纳比例&#xff01; 文章目录五险一金是什么五险一金缴纳比例养老保险养老保险构成退休年龄医疗保险生育险工伤保险失业险公积金补充&#xff1a;常见问题“五险二金”多出来的“一金”是什么&#xf…

Firewall Analyzer防火墙管理

企业防火墙管理 典型的企业网络安全基础设施包括传统防火墙、下一代防火墙 (NGFW)、虚拟专用网络 (VPN) 和来自多个供应商的代理服务器。网络安全管理&#xff0c;特别是防火墙安全管理尤其棘手&#xff0c;因为每个供应商的能力和技术差异很大。然而&#xff0c;市场上有许多…

kubernetes-Service服务发现

目录 一、Service基本概念 1、Pod的特征 1. Pod等资源的概念 2.解决pod进行如此多变化时的解决方案 2、Service 1. Kubernetes Service 定义了这样一种抽象&#xff1a; 2. Service的实现类型 3、Service模型 4、Endpoint Controller 5、Kube-proxy iptables 6、Kube…