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,谢谢!!

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

  1. 【python数据驱动+接口自动化测试】pytest+allure+yaml+jenkins+git(gitlab/gitee)下的接口自动化测试实战

    大家好,我是好学的小师弟.今天和大家分享下我前段时间的工作学习心得-接口自动化测试及其全套工作流程. 注:本文的侧重点在于工作流程,代码讲解.工具安装步骤方面可能就浅尝辄止了. 目录 前言: 工作流程 ...

  2. Python接口自动化测试工具(Pytest+Allure+jsonpath+xlrd+excel、支持Restful接口规范)

    功能 1.实现:get/post请求(上传文件)::理论上其他delete/put等请求也实现了,支持restful接口规范 2.发送邮件 3.生成allure测试报告 4.压缩测试报告文件 5.数据 ...

  3. pytest接口自动化测试框架 | 汇总

    视频来源:B站<冒死上传!pytest接口自动化测试框架(基础理论到项目实战及二次开发)教学视频[软件测试]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  4. 2022超级好用的接口自动化测试框架:基于python+requests+pytest+allure实现

    众所周知,目前市面上大部分的企业实施接口自动化最常用的有两种方式: 1.基于工具类的接口自动化,如: Postman+Newman+Jenkins+Git/svn Jmeter+Ant+Jenkins ...

  5. 接口自动化测试框架搭建:基于python+requests+pytest+allure实现

    目录 一.接口自动化测试框架需要具备什么功能? 二.接口自动化测试框架目录结构 三.日志监控文件的信息 四.搭建具有企业Logo的定制化报告. 众所周知,目前市面上大部分的企业实施接口自动化最常用的有 ...

  6. 接口自动化测试框架:python+requests+pytest+allure实现

    接口自动化测试框架 一.接口自动化测试框架需要解决的问题 二.接口自动化测试框架目录结构 三.日志监控文件的信息 四.搭建具有企业Logo的定制化报告.    今年是以往10年中最坏的一年,是未来10 ...

  7. pytest接口自动化测试框架搭建

    文章目录 一. 背景 二. 基础环境 三. 项目结构 四.框架解析 4.1 接口数据文件处理 4.2 封装测试工具类 4.3 测试用例代码编写 4.4 测试用例运行生成报告 一. 背景 Pytest目 ...

  8. 2023最新pytest+yaml接口自动化测试框架封装总结

    1. 框架封装基础 以下是框架封装的技术基础,打好这些基础的话,能够很轻松地封装出来框架 对于基础还有欠缺的话,建议针对性精进: 1. 扎实的Python语言基础 函数.类 文件读写 处理报错 数据结 ...

  9. pytest接口自动化测试框架 | 用python代码测试接口

    视频来源:B站<冒死上传!pytest接口自动化测试框架(基础理论到项目实战及二次开发)教学视频[软件测试]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  10. 浅谈Python+requests+pytest接口自动化测试框架的搭建

    框架的设计思路 首先要明确进行接口自动化需要的步骤,如下图所示: 然后逐步拆解需要完成的工作: 1)了解分析需求:了解接口要实现的功能 2)数据准备:根据开发文档确定接口的基本情况,知晓接口的url. ...

最新文章

  1. python格式化% 和 format
  2. ASP.NET 大文件下载的实现思路及代码
  3. 计算机应用12班,计算机应用二班xx毕业论文.doc
  4. JVM系列之:JIT中的Virtual Call
  5. dll文件:关于MFC程序不能定位输入点
  6. Mysqldump命令参数介绍
  7. java继承原理内存角度_Java编程的逻辑 (17) - 继承实现的基本原理
  8. axis2 java.net.url_axis2调用.net写的webservice接口实现,指定参数名
  9. java.util.LinkedHashMap cannot be cast to Entity
  10. C/C++代码调试:快速定位内存的申请和释放的位置
  11. java 堆有多少个_Java堆内存的十个要点
  12. [渝粤教育] 中国地质大学 会计专业英语 复习题
  13. 3d slicer调整窗宽窗位_3D游戏模型制作技巧,掌握这些技术你也能进鹅厂!
  14. 神经网络与深度学习第1章:绪论 阅读提问
  15. QMessageBox::information 自定义按钮
  16. 单片机(ISIS 7 Professional):简易8x8矩阵LED灯代码项目
  17. 恩智浦智能车入门——一定避免那些坑
  18. __new__方法,单例模式的小应用
  19. DFINITY 明星项目盘点,区块链热门赛道一览
  20. Android获取WIFI的SSID的一些差异,有的带引号

热门文章

  1. 子div 遮盖 父div
  2. 老虎证券爬取港股(对小米股价的实时显示和报警)
  3. java导出繁体字word_利用简繁体字转换功能实现简体字文档转换为繁体字文档的方法...
  4. keras入门(三)搭建CNN模型破解网站验证码 1
  5. STM32F103_study51_The punctual atoms(STM32 Timer interrupt )
  6. Linux系统下利用共享内存模拟迅雷下载
  7. Xubuntu22.04安装dock美化任务栏
  8. python开源项目及示例代码(转)
  9. 2020年COVID-19撤稿门系列:群魔乱舞,水军纷飞
  10. kali2020.4中文安装后,fcitx配置框中空白,无法添加输入法,请做如下操作尝试修复