Python+Pytest+Yaml+Request+Allure+GitLab+Jenkins接口自动化测试框架概解

news2024/10/7 6:47:18

Python+Pytest+Yaml+Allure整体框架目录(源代码请等下篇)

在这里插入图片描述

框架详解

  • common:公共方法包
    在这里插入图片描述

    –get_path.py:获取文件路径方法

    –logger_util.py:输出日志方法

    –parameters_until.py:传参方式方法封装

    –requests_util.py:请求方式方法封装

    –yaml_util.py:yaml文件读取写入方法

  • config: 配置包

    –config.yml:配置文件,主要为域名ip地址配置及日志输出级别

    –extract.yml:接口上下游串联时,用例文件做参数化截取返回值后自动输出保存到该文件

  • data: 用于存放csv传参文件包(可用可不用,具体根据实际情况)
    在这里插入图片描述

    –get_token.csv:存放csv文件参数

  • logs: 日志输出文件,会自动生成
    在这里插入图片描述

  • reports: 测试报告文件
    在这里插入图片描述

  • testcase: 测试用例文件集
    在这里插入图片描述

      --fenmi:项目测试用例
      
      	--login.yml:接口参数传参  
    
	
        # 如:
        -   name: 1、获取UUID
     
            base_url: ${get_base_url(base_fenmi_url)}
            request:
                method: get
                url: /fenmi/code
                headers:
                    Authorization: '{{access_token}}'
                params:
                    Accept: application/json, text/plain, */*
                    Accept-Encoding: gzip, deflate, br, zstd
                    Accept-Language: zh-CN,zh;q=0.9
                    Connection: keep-alive
            extract:
                uuid: '"uuid":"(.*?)"'
            validate:
                -   equals: {code: 200}
                -   equals: {msg: "操作成功"}
                
        # 解释:
            name:为接口名称
            
            base_url:读取config.yml文件的域名IP
            
            request:请求参数
            
            method:请求方式
            
            url:接口地址
            
            headers:请求头,比如token,'{{access_token}}'为取上游接口返回值做变量进行参数化,做参数化为固定写法'{{变量名}}'
            
            params: 请求参数,具体需要看接口请求传参方式
            
            extract:用于存在上下游接口关联时对返回值进行取值,固定写法,'"uuid":"(.*?)"'为正则表达式取值,也可用json提取,固定写法'"变量名":正则表达式'
            
            validate:断言           
		
		--test_fenmi.py: 单用例执行器,执行式传入对应yaml文件地址即可
		
	    import allure
	    import pytest
	    from common.requests_util import Requestutil
	    from common.parameters_until import read_file
	
	    @allure.epic('分米互联')
	    @allure.feature('登录并查询服务收入细项列表数据')
	    class Testrequests:
	
	        # 获取access_token(get请求)
	        @allure.story('获取uuid并登录获取token')
	        @allure.severity("normal")
	        @pytest.mark.parametrize("caseinfo",read_file('/testcases/fenmi/login.yml'))
	        def test_get_token(self,caseinfo):
	            allure.dynamic.title(caseinfo['name'])
	            allure.dynamic.description(caseinfo['name'])
	            Requestutil().analysis_yaml(caseinfo)
	
  • all.py: 主运行程序

  • conftest.py: 测试配置工具,clean_extract方法为重跑时清除原文件数据

  • debugtalk.py:自定义函数,用于存放公共函数和变量的文件

  • environment.properties:用于生成allure测试报告时,配置展示环境数据

  • pytest.ini: pytest测试运行配置文件,用于配置pytest运行时指定一些参数

[pytest]
    addopts = -vs --alluredir=reports/temp --clean-alluredir            运行时清除原先的测试报告及临时文件
    ; testpaths = testcases/fenmi                                       执行单个项目测试文件时可选一个testcase目录
    testpaths = testcases/fenmi testcases/weixin testcases/Zgen         执行多个项目测试文件时可选多个testcase目录   
    python_files = test_*.py                                            执行的文件,及测试用例
    python_classes = Test*                                              执行对应测试用例目录所有Test开头的类
    python_functions = test_*                                           执行对应类下所有的test开头的方法

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

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

相关文章

从零开始学docker(四)-安装mysql及主从配置(一)

mysql MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关…

基于 elementUI / elementUI plus,实现 主要色(主题色)的一件换色(换肤)

一、效果图 二、方法 改变elementUI 的主要色 --el-color-primary 为自己选择的颜色,核心代码如下: // 处理主题样式 export function handleThemeStyle(theme) {document.documentElement.style.setProperty(--el-color-primary, theme) } 三、全部代…

通用后台管理系统(一)——项目介绍

目录 二、文档结构 src文件夹: 三、技术和插件 1、Vue router 2、element-ui框架 3、样式插件less 4、vuex状态管理 5、axios.js 6、mock.js模拟数据 7、echarts图表工具 四、项目效果展示 总结 一、项目介绍 通用后台管理是采用vue2cli开发的项目&#…

CMN-700(1)CMN-700概述

本章介绍CMN-700,这是用于AMBA5 CHI互连,且可根据需要定制的网格拓扑结构。 1. 关于CMN‐700 CMN‐700是一种可配置扩展的一致性互连网络,旨在满足高端网络和企业计算应用中使用的一致性网络系统的功率、性能和面积(PPA)要求。支持1-256个处…

SQL Server 触发器

触发器是一种存储数据库过程,当数据库中发生特定事件(如插入、更新或删除操作)时,会自动调用该触发器。审核SQL Server实例的方法有很多,其中一种方法是使用审核触发器,触发器在SQL Server数据库中扮演着关…

七天速通javaSE:第二天 基础:标识符与数据类型

文章目录 前言一、注释与标识符1. 注释2. 标识符2.1 标识符2.2 关键字 二、数据类型1. 语言类型2. 数据类型2.1 基本数据类型2.2引用数据类型 三、类型转换1. 自动转换2. 强制转换(不建议) 四、代码规范 前言 今天将学习Java语法的基础,认识…

dataguard 主备切换方式switchover 和 failover 操作步骤

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等) 公众号:老苏畅谈运维 欢迎关注本人公众号,更多精彩与您分享。datagu…

modelsim做后仿真的一点思路

这是以TD_5.6.3_Release_88061生成的网表文件(其他工具生成的网表文件类似),与modelsim联合进行门级仿真的样例,时序仿真与门级仿真的方法类似,只是增加了标准延时文件。 1、建立门级仿真工程 将门级网表和testbench添…

【Linux】线程Thread

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ ​ 线程概述 …

ROS学习(17):定位和地图绘制(1)

目录 0.前言 1.定位和建图 1.里程计(Odometry) 2.扫描匹配(Scan Matching) 3.结尾 0.前言 好久不见各位,前段时间忙着考试(6级和一些专业课)和摆烂断更了近30天,现在哥们回来更…

【移动应用开发期末复习】第五/六章

系列文章 第一章——Android平台概述 第一章例题 第二章——Android开发环境 第二章例题 第三章 第三章例题 第四章 系列文章界面布局设计线性布局表格布局帧布局相对布局约束布局控制视图界面的其他方法代码控制视图界面数据存储与共享首选项信息数据文件SQLite数据库Content…

【Linux】锁|死锁|生产者消费者模型

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ ​ 访问互斥 …

VOC格式转YOLO格式,xml文件转txt文件简单通用代码

目录 前言 思路介绍 代码 完整代码 拓展代码 前言 很多人在进行目标检测训练时习惯将得到的数据标注为XML文件的VOC格式,或者在网上获取的数据集被标注为XML文件,但是不同的标注工具进行的标注会产生不同的标注xml文件,这里我写了一种通用…

Ruby langchainrb gem and custom configuration for the model setup

题意:Ruby 的 langchainrb gem 以及针对模型设置的自定义配置 问题背景: I am working in a prototype using the gem langchainrb. I am using the module assistant module to implemente a basic RAG architecture. 我正在使用 langchainrb 这个 ge…

初识Java(二)

初识Java的main方法 1.1 main方法示例 public class world {public static void main(String[] args) {System.out.println("hello,world!");}}通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成&#x…

标签接口开发(富含完整CRUD开发流程)

文章目录 1.easyCode生成CRUD1.生成代码2.查看代码3.调整代码1.SubjectLabelDao.xml发现生成的select语句不带逗号!!!1.解决方法:2.entity.java.vm3.dao.java.vm4.Mapper.xml.vm 2.重新生成代码3.SubjectLabelDao.java 删除Pageab…

11-Django项目--Ajax请求二

目录 模版: demo_list.html perform_list.html 数据库操作: 路由: 视图函数: Ajax_data.py perform.py 模版: demo_list.html {% extends "index/index.html" %} {% load static %} # 未实现修改,删除操作{% block content %}<div class"container…

nacos在k8s上的集群安装实践

目录 概述实践nfs安装使用 k8s持久化nacos安装创建角色部署数据库执行数据库初始化语句部署nacos ingress效果展示 结束 概述 本文主要对 nacos 在k8s上的集群安装 进行说明与实践。主要版本信息&#xff0c;k8s: 1.27.x&#xff0c;nacos: 2.0.3。运行环境为 centos 7.x。 实…

江协科技51单片机学习- p19 串口通信

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记&#xff0c;在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用&#xff1a; 51单片机入门教程-2…

力扣:59. 螺旋矩阵 II(Java,模拟)

目录 题目描述示例 1&#xff1a;代码实现 题目描述 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5…