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


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

    在这里插入图片描述

    框架详解

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

      – connect_db.py:封装SQL链接及SQL操作

      –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开头的方法
    
  • 相关阅读:
    CommunityToolkit.Mvvm8.1 viewmodel使用-旧式写法(2)
    Java架构师缓存架构设计解决方案
    戏说领域驱动设计(十五)——内核元素
    原型和原型链
    缓慢变化维度SCD
    过滤器和拦截器的区别
    【Spring Security】安全框架学习(八)
    蓝桥杯单片机串口初始化加上之后,数码管就不能正常显示了,为什么
    数商云:跨境美妆步入下半场,跨境电商商城系统助力企业打好“出海”攻坚战
    七周成为数据分析师 | 数据库
  • 原文地址:https://blog.csdn.net/weixin_42760923/article/details/139829024