IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> pytest+ymal设计接口自动化框架过程记录(一步一步记录如何设计) -> 正文阅读

[系统运维]pytest+ymal设计接口自动化框架过程记录(一步一步记录如何设计)

之前也写了一个测试框架,不过用例需要用代码来编写基于pytest搭建接口自动化测试框架,提供源码
1.第一步我先写一个环境配置文件,按自己公司环境配置,我这边只有测试和生产环境,配置协议,域名和headers。后续我只有提供地址和请求参数就可以发起接口访问
在这里插入图片描述
2.我写一个读取文件的类,准备用于处理文件相关,现在只有读取yaml问的方法,后续准备写读取execl、execl和yaml用例数据转换,用例数据处理。
在这里插入图片描述
方法测试:
在这里插入图片描述
3.环境配置总开关,一开始我是想把环境这个参数放着请求时填写的,最后发现比较麻烦,一切以简单明了为好
在这里插入图片描述

4.写一个读取并处理配置文件信息的方法,使用我之前写的读取ymal的方法,把数据组合起来
在这里插入图片描述
5.初步封装requests方法,大部分接口都是这2个请求场景,针对公司接口格式封装
在这里插入图片描述
测试请求数据读取情况,读出来最终url,headers,data
在这里插入图片描述
6.yaml格式用例设计
在这里插入图片描述
测试读取,按照注释的格式来(设计时各种报错)
在这里插入图片描述

7.编写用例请求参数依赖方法(接口返回值提取和接口参数依赖),一个图截不下啊
data_is_replace()判断数据需不需要替换,data有可能是空,因为一些接口不需要请求参数,或者不需要提取接口返回值
在这里插入图片描述
搞个代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@time    : 2022/6/14 
@Author  : LL
@File    : parameter_setting.py
参数处理
'''
from jsonpath import jsonpath

class ParameterSetting:
    # 参数存放和提取
    access_value = {'b': 213, 'g': 21}
    @classmethod
    def data_is_replace(cls, data):
        '''
        :param data: 请求参数data和提取参数extract_key
        :return: 返回参数是否需要被替换
        '''
        if data is None:
            return False
        for k, v in data.items():
            if '$.' in v:
                return True
        return False
    @classmethod
    def parameter_setting(cls, data: dict, type='get'):
        '''
        :param data: 返回结果提取和参数依赖使用dict 例:{'bill': '$.bill'}
        :param type: save :把数据存到参数池里面无返回,get读取参数池数据并返回新值
        :return:
        '''
        if type == 'get':
            # {'b': '$.b','g':'$.g'} 提取格式键+提取表达式
            for k, v in data.items():
                if '$.' in v:
                    v = jsonpath(cls.access_value, v)[0]
                    data[k] = v
            print(f'最终返回参数:{data}')
            return data
        elif type == 'save':
            # {'a':44,'a1':144} 键 + 明确的值
            for k, v in data.items():
                # 把data的键值添加到参数池里面
                cls.access_value[k] = v


if __name__ == '__main__':
    # 测试参数存储
    ParameterSetting.parameter_setting({'a': 44, 'a1': 144}, 'save')
    # 测试参数读取
    ParameterSetting.parameter_setting({'b': '$.b', 'g': '$.g'})
    print(f'最终的参数池{ParameterSetting.access_value}')

测试
在这里插入图片描述
8.写一个读取用例数据的迭代器,可以判断是否需要执行,把请求参数表达式替换为具体的值,测试结果也截图了,但是这个方法只能读取单个文件的数据,后续处理多个文件。或者直接读取整个文件,还可以设置排除用例文件的方式运行
在这里插入图片描述
测试代码这里使用了生成器来一条一条的返回 生成器我之前写过一篇 python生成器+pytest实现参数化
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:57:06  更:2022-06-14 22:57:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 22:40:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码