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开头的方法
相关推荐
秃了也弱了。6 小时前
python实现定时任务:schedule库、APScheduler库
开发语言·python
Dfreedom.6 小时前
从 model(x) 到__call__:解密深度学习框架的设计基石
人工智能·pytorch·python·深度学习·call
weixin_425023006 小时前
Spring Boot 配置文件优先级详解
spring boot·后端·python
Xの哲學6 小时前
Linux SMP 实现机制深度剖析
linux·服务器·网络·算法·边缘计算
2501_906150567 小时前
私有部署问卷系统操作实战记录-DWSurvey
java·运维·服务器·spring·开源
钦拆大仁7 小时前
单点登录SSO登录你了解多少
服务器·sso
小徐Chao努力7 小时前
【Langchain4j-Java AI开发】06-工具与函数调用
java·人工智能·python
无心水7 小时前
【神经风格迁移:全链路压测】33、全链路监控与性能优化最佳实践:Java+Python+AI系统稳定性保障的终极武器
java·python·性能优化
only火车头8 小时前
升级 ceph (16.2 -> 18.2) ceph mon 启动失败
服务器·ceph
luoluoal8 小时前
基于python的小区监控图像拼接系统(源码+文档)
python·mysql·django·毕业设计·源码