当前位置: 首页 > news >正文

自动化测试数据:如何正确地选择不同格式文件「详细介绍」?

自动化测试数据:如何正确地选择不同格式文件「详细介绍」?

  • 前言
  • 1. 不同的格式文件对比
  • 2. 读取文件
    • 2.1 读取Excel文件
    • 2.2 读取CSV文件
    • 2.3 读取YAML文件
      • 2.3.1 字典
      • 2.3.2 列表
      • 2.3.3 混合类型
      • 2.3.4 包含列表的字典
      • 2.3.5 包含字典的列表
      • 2.3.6 复杂嵌套
    • 2.4 读取JSON文件
    • 2.5 读取XML文件

前言

在自动化测试中,可以使用不同格式的数据文件,以数据驱动的方式执行测试。下面教大家如何根据实际使用场景,选择正确的文件格式来驱动测试、读取不同文件的数据。

1. 不同的格式文件对比

文件格式优点缺点
Excel- 生成数据方便
- 用户界面友好
- 易于编辑和查看
- 作为二进制文件,不利于版本管理
- 一张工作表最多有256列,65536行
- 只支持单事务,如需多线程读取会有瓶颈
CSV- 结构简单
- 可用Excel编辑,可与Excel进行转换
- 处理速度快
- 文件格式方便版本管理
- 不容易描述复杂的层级结构
YAML- 格式完备
- 可读性好
- 可以注释
- 格式简单
- 处理速度随着数据量增加而显著下降
- 不适合处理海量数据
XML- 格式完备- 冗长复杂
JSON- 格式完备
- 可读性良好
- 不能编写注释
- 格式死板

根据以上表格,我们可以得出以下结论:

  • YAML和JSON对于数据结构的支持和书写程度较好,但是YAML写法更加简洁且可以添加注释,推荐YAML文件格式;
  • 当存在海量数据需要读取时,YAML的处理速度会比Excel慢一个量级,所以YAML更适合做单条用例或者少量用例的测试
  • 对于大量数据的测试CSV格式由于其简单和快速的处理速度,可能是更好的选择。

2. 读取文件

以下是使用Python语言读取Excel、CSV、YAML、JSON和XML文件的示例方法。

2.1 读取Excel文件

读取Excel文件,可以使用openpyxl库(对于.xlsx文件)或xlrd库(对于.xls文件)。

import openpyxldef read_excel(file_path, sheet_name=0):workbook = openpyxl.load_workbook(file_path)sheet = workbook[sheet_name]data = []for row in sheet.iter_rows(values_only=True):data.append(row)return data

2.2 读取CSV文件

Python内置了csv模块,可以很方便地读取CSV文件。

import csvdef read_csv(file_path):with open(file_path, newline='', encoding='utf-8') as csvfile:reader = csv.reader(csvfile)data = [row for row in reader]return data

2.3 读取YAML文件

读取YAML文件可以使用PyYAML库。

import yamldef read_yaml(file_path):with open(file_path, 'r') as file:data = yaml.safe_load(file)return data

2.3.1 字典

# 示例配置文件:example.yaml
个人信息:姓名: 王小明年龄: 28
import yamldef read_yaml(file_path):with open(file_path, 'r', encoding='utf-8') as file:  # 确保文件编码为utf-8,以支持中文data = yaml.safe_load(file)return datadata = read_yaml('example.yaml')
print(data)  # 输出:{'个人信息': {'姓名': '王小明', '年龄': 28}}

2.3.2 列表

# 示例配置文件:example.yaml
喜欢的水果:- 苹果- 香蕉- 樱桃
import yamldef read_yaml(file_path):with open(file_path, 'r', encoding='utf-8') as file:data = yaml.safe_load(file)return datadata = read_yaml('example.yaml')
print(data)  # 输出:{'喜欢的水果': ['苹果', '香蕉', '樱桃']}

2.3.3 混合类型

# 示例配置文件:example.yaml
个人资料:姓名: 王小明年龄: 28爱好:- 阅读- 游泳住址:街道: 789 大街城市: 未来城
import yamldef read_yaml(file_path):with open(file_path, 'r', encoding='utf-8') as file:data = yaml.safe_load(file)return datadata = read_yaml('example.yaml')
print(data)  # 输出:{'个人资料': {'姓名': '王小明', '年龄': 28, '爱好': ['阅读', '游泳'], '住址': {'街道': '789 大街', '城市': '未来城'}}}

2.3.4 包含列表的字典

# 示例配置文件:example.yaml
人员列表:- 姓名: 王小明年龄: 28- 姓名: 李小红年龄: 25
import yamldef read_yaml(file_path):with open(file_path, 'r', encoding='utf-8') as file:data = yaml.safe_load(file)return datadata = read_yaml('example.yaml')
print(data)  # 输出:{'人员列表': [{'姓名': '王小明', '年龄': 28}, {'姓名': '李小红', '年龄': 25}]}

2.3.5 包含字典的列表

# 示例配置文件:example.yaml
用户数据:- 用户: 小明编号: 1- 用户: 小红编号: 2
import yamldef read_yaml(file_path):with open(file_path, 'r', encoding='utf-8') as file:data = yaml.safe_load(file)return datadata = read_yaml('example.yaml')
print(data)  # 输出:{'用户数据': [{'用户': '小明', '编号': 1}, {'用户': '小红', '编号': 2}]}

2.3.6 复杂嵌套

# 示例配置文件:example.yaml
公司信息:名称: xx科技有限公司员工:- 姓名: 王小明职位: 开发人员- 姓名: 李小红职位: 经理地址:街道: 1010 月光路城市: 月光城
import yamldef read_yaml(file_path):with open(file_path, 'r', encoding='utf-8') as file:data = yaml.safe_load(file)return datadata = read_yaml('example.yaml')
print(data)  # 输出:{'公司信息': {'名称': 'xx科技有限公司', '员工': [{'姓名': '王小明', '职位': '开发人员'}, {'姓名': '李小红', '职位': '经理'}], '地址': {'街道': '1010 月光路', '城市': '月光城'}}}

2.4 读取JSON文件

读取JSON文件可以使用Python内置的json模块。

import jsondef read_json(file_path):with open(file_path, 'r', encoding='utf-8') as jsonfile:data = json.load(jsonfile)return data

2.5 读取XML文件

对于XML文件的读取,Python提供了几种不同的库,其中最常用的是xml.etree.ElementTree。

import xml.etree.ElementTree as ETdef read_xml(file_path):tree = ET.parse(file_path)root = tree.getroot()data = []for child in root:record = {}for subchild in child:record[subchild.tag] = subchild.textdata.append(record)return data

相关文章:

自动化测试数据:如何正确地选择不同格式文件「详细介绍」?

自动化测试数据:如何正确地选择不同格式文件「详细介绍」? 前言1. 不同的格式文件对比2. 读取文件2.1 读取Excel文件2.2 读取CSV文件2.3 读取YAML文件2.3.1 字典2.3.2 列表2.3.3 混合类型2.3.4 包含列表的字典2.3.5 包含字典的列表2.3.6 复杂嵌套 2.4 读…...

OceanBase中扩容OCP节点step by step

许多用户在开始使用OceanBase时部署OCP,通常选择单节点部署。但随着后续业务规模的不断扩大,会开始担忧单节点OCP在面对故障时可能丧失对集群运维管控的连续性。鉴于此,会将现有的单节点OCP扩展至多节点部署,以此来确保OCP服务的高…...

国家人工智能创新应用先导区数据及城市人工智能先导区准自然实验数据(2006-2023年)

一、测算方式:参考C刊《当代财经》冯婉昕(2024)老师的做法,本文的核心解释变量为国家人工智能创新应用先导区政策 (AI)。企业的金融资产配置是企业生产经营的内生变量,因此,如果选择…...

搜维尔科技:感受、握持、推动、连接和挤压虚拟物体,SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能

感受、握持、推动、连接和挤压虚拟物体,SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能 感受、握持、推动、连接和挤压虚拟物体,SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能...

C++中的引用详解

C中的引用详解 什么是引用 引用是一种取别名的机制,用于为变量提供一个新的名字。在C中,引用的语法使用&符号。引用允许我们以一种更安全和直观的方式来操作变量。 为什么要使用指针 在C中,虽然引用提供了一些优势,但指针仍…...

软考中级 - 软件设计师学习笔记 - 1.3 计算机安全

1.3.1 安全威胁 计算安全:指的是计算机资产安全,是要保证这些计算机资产不受自然和人为的有害因素的威胁和危害。 1.3.2 加密技术和认证技术 加密技术:对称加密(私有密钥加密)、非对称加密(公开密钥加密)。对称加密(私钥/私有密…...

Unity3D相关知识点总结

Unity3D使用的是笛卡尔三维坐标系,并且是以左手坐标系进行展示的。 1.全局坐标系(global) 全局坐标系描述的是游戏对象在整个世界(场景)中的相对于坐标原点(0,0,0)的位置…...

牛顿迭代多维+原理推导

这是两个函数了两个变量的情况,对于三个函数两个变量,牛顿迭代的雅可比矩阵不能求逆, 右边的增量的求解就不能用这个公式了呢。对于有逆矩阵但不能求逆的公式,这个逆矩阵是求解线性方程时出现的,就可用不求逆的方法解…...

[自然语言处理]RNN

1 传统RNN模型与LSTM import torch import torch.nn as nntorch.manual_seed(6)# todo:基础RNN模型 def dem01():参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3&#xff1a…...

MySQL(B站CodeWithMosh)——2024.10.11(14)

ZZZZZZ目的ZZZZZZ代码ZZZZZZ重点ZZZZZZ操作(非代码,需要自己手动) 8- CASE运算符The CASE Operator_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1UE41147KC?p62&vd_sourceeaeec77dfceb13d96cce76cc299fdd08 在sql_store中&am…...

Transformer的预训练模型

Transformer的预训练模型有很多,其中一些在自然语言处理(NLP)和计算机视觉等领域取得了巨大成功。以下是一些主要的Transformer预训练模型: 1. BERT (Bidirectional Encoder Representations from Transformers) 简介: BERT 是谷歌推出的双向Transformer模型,专注于编码器…...

手撕单例模式

在Go语言中实现单例模式,通常需要确保一个类只有一个实例,并且提供一个全局访问点。Go语言本身没有类的概念,但可以通过结构体和函数来模拟这种行为。下面是一个简单的手撕单例模式的实现示例: 懒汉式(延迟初始化&…...

UE4 材质学习笔记06(布料着色器/体积冰着色器)

一.布料着色器 要编写一个着色器首先是看一些参考图片,我们需要找出一些布料特有的特征,下面是一个棉织物,可以看到布料边缘的纤维可以捕捉光线使得边缘看起来更亮 下面是缎子和丝绸的图片,与棉织物有几乎相反的效果,…...

人工智能学习框架

人工智能学习框架是指用于开发和训练机器学习和深度学习模型的软件库和工具集。这些框架帮助开发者更高效地构建、训练和部署模型,加速人工智能应用的开发进程。 常见的人工智能学习框架 TensorFlow 由Google开发,是一个开源的深度学习框架,…...

GEE 教程:Landsat TOA数据计算地表温度(LST)

目录 简介 函数 expression(expression, map) Arguments: Returns: Image reduceRegion(reducer, geometry, scale, crs, crsTransform, bestEffort, maxPixels, tileScale) Arguments: Returns: Dictionary 代码 结果 简介 地表温度(Land Surface Temperature,LS…...

Web编程---配置Tomcat

文章目录 一、目的二、原理三、过程1. 解压“apache-tomcat-10.0.27-windows-x64.zip”文件到指定文件夹。2. 配置环境变量3.修改编码方式,防止 Tomcat 控制台出现乱码。4.启动 Tmocat5.打开浏览器,地址栏输入 http://localhost:8080 ,如果看…...

物联网5G模块WIFI模块调式记录(Pico)

调试环境 MCU:Pico1(无wifi版)5G模块:EC800K(iot专用4g卡)WIFI模块:ESP01s(Esp8266芯片)、DX-WF24开发环境:MacBook Pro Sonoma 14.5开发工具:Th…...

中国平安蝉联2024“金融业先锋30”第一名 获金融业ESG最高五星评级

2024年10月15日,中央广播电视总台正式对外发布《金融业ESG行动报告(2024)》(以下简称"《报告》"),并公布了"中国ESG上市公司金融业先锋30"榜单。中国平安凭借在绿色金融、普惠金融、养…...

[图解]题目解析:财务人员最有可能成为业务执行者的是

1 00:00:00,420 --> 00:00:04,760 接下来,是第3章自测题第1部分的第8题 2 00:00:05,090 --> 00:00:08,120 单选,针对以下研究对象 3 00:00:08,900 --> 00:00:11,530 财务人员最有可能成为业务执行者的是 4 00:00:12,800 --> 00:00:15,280…...

零基础学大模型——大模型技术学习过程梳理

“学习是一个从围观到宏观,从宏观到微观的一个过程” 学习大模型技术也有几个月的时间了,之前的学习一直是东一榔头,西一棒槌,这学一点那学一点,虽然弄的乱七八糟,但对大模型技术也算有了一个初步的认识。…...

AI大语言模型其实就是一个归纳与演绎的概率机器

您这句话精准地概括了当前主流人工智能(尤其是大语言模型)的核心本质。它确实是一个基于海量数据,通过统计归纳来学习模式,并通过概率演绎来生成输出的机器。 但这一定义既是其强大能力的根源,也是其根本局限的边界。我们可以从三个层面来理解: 一、这句话为什么是精准…...

次元画室赋能微信小程序:开发个人AI画室应用

次元画室赋能微信小程序:开发个人AI画室应用 你有没有过这样的经历?脑子里闪过一个绝妙的画面,可能是某个角色的形象,或是一个奇幻的场景,但苦于不会画画,只能任由灵感溜走。或者,你随手画了个…...

还在为跨平台模组烦恼?这款工具让你一键获取Steam创意内容

还在为跨平台模组烦恼?这款工具让你一键获取Steam创意内容 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否也曾遇到这样的困境:在Epic Games Stor…...

# 发散创新:基于事件驱动架构的实时日志监控系统设计与实现在现代分布式系统中,**事件驱动编程模型

发散创新:基于事件驱动架构的实时日志监控系统设计与实现 在现代分布式系统中,事件驱动编程模型正逐渐成为构建高可扩展、高性能应用的核心范式。相比传统的轮询或阻塞式处理方式,事件驱动能够显著降低资源消耗并提升响应效率。本文将深入探讨…...

文墨共鸣镜像详解:开箱即用的中文语义相似度分析解决方案

文墨共鸣镜像详解:开箱即用的中文语义相似度分析解决方案 1. 引言:当传统美学遇上现代AI 在信息爆炸的时代,我们每天都要处理大量文本内容。无论是商业文案的比对、学术观点的对照,还是日常交流的理解,快速判断两段文…...

PROJECT MOGFACE在复杂网络分析中的应用:图数据建模与推理

PROJECT MOGFACE在复杂网络分析中的应用:图数据建模与推理 最近在分析一个社交网络项目时,我遇到了一个挺头疼的问题:面对几万个用户节点和错综复杂的关注关系,传统的分析方法要么计算量巨大,要么难以挖掘出深层的模式…...

探索800+免费接口:API资源库的高效集成指南

探索800免费接口:API资源库的高效集成指南 【免费下载链接】public-api-lists A collective list of free APIs for use in software and web development 🚀 (Clone of https://github.com/public-apis/public-apis) 项目地址: https://gitcode.com/G…...

权限控制避坑指南:为什么你的RBAC系统总出问题?从数据库设计到接口鉴权全解析

RBAC权限系统深度避坑指南:从数据库设计到接口鉴权的全链路实践 在数字化系统开发中,权限控制就像建筑物的承重墙——平时看不见,一旦出问题就是系统性崩溃。我曾见过一个日活百万的电商平台因为角色权限配置错误,导致客服人员误删…...

Ostrakon-VL-8B效果展示:AI识别货架商品、检查消防通道真实案例

Ostrakon-VL-8B效果展示:AI识别货架商品、检查消防通道真实案例 1. 零售行业的视觉智能革命 走进任何一家超市或餐厅,你都会看到员工忙碌地进行各种检查:商品是否摆放整齐、货架是否需要补货、消防通道是否畅通。这些看似简单的工作&#x…...

工业数据采集避坑指南:Java+Utgard实现OPC DA高可靠通信的3个关键技巧

工业数据采集避坑指南:JavaUtgard实现OPC DA高可靠通信的3个关键技巧 在工业自动化领域,OPC DA(OLE for Process Control Data Access)协议作为连接工业设备和信息系统的桥梁,其稳定性直接关系到生产数据的完整性和实时…...