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

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:接口参数传参  
    
python 复制代码
	
        # 如:
        -   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运行时指定一些参数

python 复制代码
[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开头的方法
相关推荐
疯一样的码农1 分钟前
Python 正则表达式(RegEx)
开发语言·python·正则表达式
萨格拉斯救世主22 分钟前
戴尔R930服务器增加 Intel X710-DA2双万兆光口含模块
运维·服务器
无所谓จุ๊บ23 分钟前
树莓派开发相关知识十 -小试服务器
服务器·网络·树莓派
Jtti25 分钟前
Windows系统服务器怎么设置远程连接?详细步骤
运维·服务器·windows
yeyuningzi39 分钟前
Debian 12环境里部署nginx步骤记录
linux·运维·服务器
进击的六角龙1 小时前
Python中处理Excel的基本概念(如工作簿、工作表等)
开发语言·python·excel
一只爱好编程的程序猿1 小时前
Java后台生成指定路径下创建指定名称的文件
java·python·数据下载
EasyCVR1 小时前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
Aniay_ivy1 小时前
深入探索 Java 8 Stream 流:高效操作与应用场景
java·开发语言·python
gonghw4032 小时前
DearPyGui学习
python·gui