西安专业网站建设服务公司,网站推广软件工具,建设部网站造价咨询,网络推广专员考核指标自动化测试数据#xff1a;如何正确地选择不同格式文件「详细介绍」#xff1f; 前言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 读… 自动化测试数据如何正确地选择不同格式文件「详细介绍」 前言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_name0):workbook openpyxl.load_workbook(file_path)sheet workbook[sheet_name]data []for row in sheet.iter_rows(values_onlyTrue):data.append(row)return data2.2 读取CSV文件
Python内置了csv模块可以很方便地读取CSV文件。
import csvdef read_csv(file_path):with open(file_path, newline, encodingutf-8) as csvfile:reader csv.reader(csvfile)data [row for row in reader]return data2.3 读取YAML文件
读取YAML文件可以使用PyYAML库。
import yamldef read_yaml(file_path):with open(file_path, r) as file:data yaml.safe_load(file)return data2.3.1 字典
# 示例配置文件example.yaml
个人信息:姓名: 王小明年龄: 28import yamldef read_yaml(file_path):with open(file_path, r, encodingutf-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, encodingutf-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, encodingutf-8) as file:data yaml.safe_load(file)return datadata read_yaml(example.yaml)
print(data) # 输出{个人资料: {姓名: 王小明, 年龄: 28, 爱好: [阅读, 游泳], 住址: {街道: 789 大街, 城市: 未来城}}}2.3.4 包含列表的字典
# 示例配置文件example.yaml
人员列表:- 姓名: 王小明年龄: 28- 姓名: 李小红年龄: 25import yamldef read_yaml(file_path):with open(file_path, r, encodingutf-8) as file:data yaml.safe_load(file)return datadata read_yaml(example.yaml)
print(data) # 输出{人员列表: [{姓名: 王小明, 年龄: 28}, {姓名: 李小红, 年龄: 25}]}2.3.5 包含字典的列表
# 示例配置文件example.yaml
用户数据:- 用户: 小明编号: 1- 用户: 小红编号: 2import yamldef read_yaml(file_path):with open(file_path, r, encodingutf-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, encodingutf-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, encodingutf-8) as jsonfile:data json.load(jsonfile)return data2.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