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

news/2024/12/22 18:55:58/

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

首先看个样本:

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

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

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

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

四、统一接口请求封装

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

import jsonimport requestsclass 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.ppmy.cn/news/1267771.html

相关文章

logback日志打印操作人

logback日志打印操作人 自定义拦截器 package com.demo.dv.net.config;import com.demo.dv.net.common.domain.UserInfo; import com.demo.dv.net.common.utils.CurrentUserUtil; import org.slf4j.MDC; import org.springframework.stereotype.Component; import org.spring…

【日志技术】附Logback入门教程

文章目录 日志概论日志的体系Logback快速入门日志配置文件配置日志级别 日志概论 什么是日志?其实可以通过下面几个问题来了解的。 系统系统能记住某些数据被谁操作,比如被谁删除了?想分析用户浏览系统的具体情况,比如挖掘用户的…

常用whl文件地址整理

文章目录 一、Deep Graph Library(DGL)二、torch torchvision torchaudio三、numpy四、pandas可留言其他whl文件地址,不定期更新 一、Deep Graph Library(DGL) DGL是一个专门用于深度学习图形的Python包, 一款面向图神…

基于JavaWeb+SSM+Vue居住证申报系统小程序的设计和实现

基于JavaWebSSMVue居住证申报系统小程序的设计和实现 源码获取入口KaiTi 报告Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 KaiTi 报告 1.1题目背景 随着时代的发展,人口流动越来越频繁&#xff0…

UI设计中的肌理插画是什么样的?

肌理插画本质也和扁平插画差不多,相较扁平插画,肌理插画的层次感、细节更多,也会更立体生动。 肌理插画风格没有描边线,画面轻快,通过色块的明暗来区分每个元素,有点像色彩版的素描,但更简单&a…

tomcat部署以及虚拟主机的部署

Tomcat概述 Tomcat是Java语言开发的,服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,Tomcat虽然和…

Next.js ts redux/toolkit状态管理

目录 介绍 安装依赖 初始化store 1、在src下创建store文件夹, 2、创建最简单的slice切片 3、创建入口文件index.ts 4、创建hooks.ts 在_app.tsx中注入store tsx中使用store payload createAsyncThunk 效果 介绍 reduxjs/toolkit是Redux 官方提供的一个…

基于高通MSM8953平台的android系统SGM41511充电IC驱动开发

4.1、修改msm8953-no-pmi.dts: 修改/kernel/msm-4.9/arch/arm64/boot/dts/qcom/msm8953-no-pmi.dts,增加: +&tlmm {+ sgm41511_int_active: sgm41511_int_active {+ mux {+ pins = "gpio42"; + function = "gpio"; + }; + + config {+ pins =…