接口自动化测试之Yaml数据驱动封装!

news2024/12/22 17:33:19

一、数据驱动:pytest.mark.parametrize()

首先看个样本:

import pytest
 
class TestData:
    # parametrize有两个值,一个是args_name:参数名,一个是args_value:参数值,可以有多个,进行数据解包
    # args_value可以是:list列表,数组,字典列表,在数据中有多少个值,接口用例就会执行多少次,相等于遍历
 
    # 基础用法  
    @pytest.mark.parametrize('name', ["李四", '王五'])
    def test_data(self, name):
        print(name)
 
    # 多层数据,解包
    @pytest.mark.parametrize('name,age', [["李四", '15岁'], ["王五", '16岁'], ["刘大", '126岁']])
    def test_data1(self, name, age):
        print(name, age)

上面的测试数据都是死的,项目中很少把测试用例 数据写在py文件中,那么就需要单独对数据进行封装,就有了yaml文件或excel文件,进行数据驱动封装

二、了解yaml详情及写法:
一种数据格式
主要作用:
1、配置文件
2、测试用例
数据组成:
1、map对象:键:(空格)值对,如:"a": "b"
2、多组需要用-开头,标注为不同组数据:

-
  name: 正确验证码登录
  request:
    method: get
    url:  http://域名/jeecg-boot/sys/login
    data:
          captcha: Gkak!@#2019s
          checkKey: 1637811815838
          password: 123456
          remember_me: 1
          username: admin
  validate: None
-
  name: 错误验证码登录
  request:
    method: get
    url:  http://ip:端口号/jeecg-boot/sys/login
    data:
          captcha: Gkak!@#2019s
          checkKey: 1637811815838
          password: 123456
          remember_me: 1
          username: admin
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:822269834【暗号:csdn999】

三、首先我们要读取yaml文件的方法:

之前封装过一个yaml工具类文件,我们只需在里面加入下面这方法即可

 # 读取测试用例的Yaml文件
    def readCaseYaml(self, yamlfileDir, yamlfileName):
        work = os.getcwd() + "/" + yamlfileDir + "/" + yamlfileName
        print(work)
        with open(work, mode='r', encoding='utf-8') as f:
            value = yaml.load(stream=f, Loader=yaml.FullLoader)
        return value

四、统一接口请求封装

因为:如果我么需要多所有的接口请求进行分析处理,日志监控,这样我们就需要制定提取出接口请求的规则:

import json
 
import requests
 
 
class RequestUnit:
    session = requests.session()
 
    def sendRequest(self, method, url, data, **kwargs):
        #把请求方法改成小写
        method = str(method).lower()
        rep = None
        #get请求以params接参数
        if method == "get":
            rep = RequestUnit.session.request(method=method, url=url, params=data, **kwargs)
        # post请求以data接参数,原因:data只能传输简单的只有键值对的dict或者str格式的数据,json一般只能传输dict格式,简单复杂的都可以
        #data可以满足多种格式,那我们只需把都转成str类型
        elif method=="post":
            # 把键值对转换成str类型
            data = json.dumps(data)
            rep = RequestUnit.session.request(method=method, url=url, data=data, **kwargs)
        return rep.text

遗留问题:
1、yaml文件里面怎么使用动态参数
2、yaml文件里面怎么实现文件上次
3、yaml文件怎么实现断言(断言写在py接口请求文件里又过于多了)
4、yaml文件数据量过多咋办
带着问题继续学习思考。。。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

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

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

相关文章

Windows环境提示“‘mysql‘ 不是内部或外部命令,也不是可运行的程序或批处文理件” 简易记录

在Windows环境下使用DOS命令窗登入MYSQL,提示“mysql 不是内部或外部命令,也不是可运行的程序或批处理文件。” 这意味着系统无法找到 mysql.exe可执行文件,这是因为 MySQL 没有正确安装或未添加到系统PATH环境变量中所致。 处理方法&#x…

巧用ChatGPT系列丛书(由北京大学出版社出版)

前言 随着人工智能技术的迅速发展,越来越多的工具和应用程序被应用于职场中,以提高我们的工作效率。其中,ChatGPT作为一种先进的自然语言处理技术,正在逐渐引起人们的关注。 ✨巧用ChatGPT系列书籍: 《巧用chatGPT快…

文献速递:PET-影像组学专题--临床上在乳腺癌方面PET-MRI的进展

文献速递:PET-影像组学专题–临床上在乳腺癌方面PET-MRI的进展 01 文献速递介绍 成像在乳腺癌的筛查、诊断、分期和管理中扮演着关键角色。乳房X线摄影(mammography)、超声检查和动态增强乳腺MRI是主要的乳腺癌成像方法。对于怀疑或已知有…

【教程】开始使用ipaguard进行代码加固混淆

目录 前言 下载ipa代码混淆保护工具 获取ipaguard登录码 代码混淆 文件混淆 IPA重签名与安装测试 前言 iOS加固保护是直接针对ios ipa二进制文件的保护技术,可以对iOS APP中的可执行文件进行深度混淆、加密。使用任何工具都无法逆向、破解还原源文件。对APP进…

mysql数据恢复

使用MySQL第三方工具binlog2sql binlog2sql,一款基于python开发的开源工具,是由大众点评团队的DBA使用python开发出来的,从MySQL binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。其功…

《Vue.js设计与实现》—Vue3响应系统的原理

一、响应式数据与副作用函数 1. 副作用函数 1-1 指令材料 在JavaScript中,副作用函数是指在执行过程中对外部环境产生可观察的变化或影响的函数。这种函数通常会修改全局变量、修改传入的参数、执行I/O操作(如读写文件或发送网络请求)、修…

Dockerfile创建镜像LNMP+WordPress

实验部署 INMPwordpress nginx 172.111.0.10 docker-nginx mysql 172.111.0.20 docker-mysql php 172.111.0.30 docker-php nginx 关闭防火墙和安全机制在opt目录创建nginx MySQL php目录 cd nginx mysql php vim Dockerfile#声明基础镜像 FROM centos:7 #安装依赖环境 R…

Datawhale 12月组队学习 leetcode基础 day1 枚举

这是一个新的专栏,主要是一些算法的基础,对想要刷leedcode的同学会有一定的帮助,如果在算法学习中遇到了问题,也可以直接评论或者私信博主,一定倾囊相助 进入正题,今天咱们要说的枚举算法,这是个…

NGINX高性能服务器与关键概念解析

目录 1 NGINX简介2 NGINX的特性3 正向代理4 反向代理5 负载均衡6 动静分离7 高可用8 结语 1 NGINX简介 NGINX(“engine x”)在网络服务器和代理服务器领域备受推崇。作为一款高性能的 HTTP 和反向代理服务器,它以轻量级、高并发处理能力以及…

供配电运维智能监控系统

供配电运维智能监控系统是一种针对供配电系统的智能监控设备,依托电易云-智慧电力物联网,旨在实现对供配电系统的实时监控、数据记录和分析,以及异常预警和故障检测等功能,以提高供配电系统的可靠性和稳定性。 该系统通常由以下部…

WhatsApp全球获客怎么做?

一、导语 随着全球数字化趋势的加速,WhatsApp作为一种即时通讯工具,已经成为了连接全球用户的桥梁。 对于企业和营销人员来说,利用WhatsApp拓展全球业务是一种非常有效的策略,本文将为您揭示WhatsApp全球获客的秘密,…

【小尘送书-第十三期】Python从入门到精通(第3版)(软件开发视频大讲堂)

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…

python:六种算法(RFO、SSA、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、六种算法简介 1、红狐优化算法RFO 2、麻雀搜索算法SSA 3、鲸鱼优化算法WOA 4、灰狼优化算法GWO 5、粒子群优化算法PSO 6、遗传算法GA 二、6种算法求解23个函数 (1)23个函数简介 参考文献: [1] Yao X, Liu Y, Lin G M. Evolution…

简单了解RNN循环神经网络

为什么需要RNN(循环神经网络) 将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特定的y,那么既然有了这么强大的模型,为什么还需要RNN(循环神经网络)呢…

资深测试总结,性能测试目的如何做?主要看什么指标?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、性能测试是什么…

学生管理系统 数据库版

如题: 一.SQL部分 a. b. c. 修改: 二.Java部分 代码: 结果

STM32CubeIDE串口空闲中断实现不定长数据接收

STM32F051空闲中断实现串口不定长数据接收 目的编程软件配置串口开中断中断程序 运行结果 目的 在串口输入不定长数据时,通过串口空闲中断来断帧接收数据。 编程软件 STM32CubeIDE STM32CubeMX配置MCU。通过对端口配置,自动生成程序,减少编…

Godot Engine:跨平台游戏开发的新境界 | 开源日报 No.92

godotengine/godot Stars: 62.6k License: MIT Godot Engine 是一个功能强大的跨平台游戏引擎,可用于创建 2D 和 3D 游戏。它提供了一套全面的常见工具,让用户可以专注于制作游戏而不必重复造轮子。该引擎支持将游戏一键导出到多个平台上,包…

3D漫游:沉浸式数字空间,步进式漫游新体验

5G时代的普及,使得人们对信息获取的要求越来越高,同时标准也越来越严格,3D漫游虚拟空间的体验,为很多用户提供了更加直观、生动的视觉体验。3D步进式漫游以其生动逼真的视觉效果和沉浸式体验,吸引着人们的关注以及多种…

lwIP 细节之四:recv 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程,其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数,注册到协议栈,在适当的时候,由协议栈自动调用,所以称为回调。 注:除非特别说明,以下内…