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

本文主要是介绍Aip接口自动化测试框架pytest+allure+request+jsonpath+excle/yaml,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

介绍

Aip接口自动化测试python+pytest+allure+request+jsonpath+excle/yaml,一个支持仅编辑Excle/yaml就可实现的接口自动化测试框架。
1.编辑Excle做接口数据驱动的数据源,新增yaml添加用例,yaml,excle混和都支持
2.接口上下游数据依赖处理
3.用例中字符串中写入函数名,获取随机值做新增接口数据
4.数据库查询断言 ,数据库提取参数
5.数据库初始化备份恢复
6.使用pytest+allure框架
7.测试完成后打包allure报告为zip包通过邮件发送
8.切换运行环境,dev/test/prod

源码:https://gitee.com/HP_mojin/pytest_allure_request_20220811

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

软件架构

软件架构说明

项目结构:   
├─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/yaml的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/431282

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密