在自动化测试中,可以使用不同格式的数据文件,以数据驱动的方式执行测试。
下面教大家如何根据实际使用场景,选择正确的文件格式来驱动测试、读取不同文件的数据。
根据以上表格,我们可以得出以下结论:
YAML和JSON对于数据结构的支持和书写程度较好,但是YAML写法更加简洁且可以添加注释,推荐YAML文件格式;
当存在海量数据需要读取时,YAML的处理速度会比Excel慢一个量级,所以YAML更适合做单条用例或者少量用例的测试;
对于大量数据的测试,CSV格式由于其简单和快速的处理速度,可能是更好的选择。
以下是使用Python语言读取Excel、CSV、YAML、JSON和XML文件的示例方法。
2.1 读取Excel文件
读取Excel文件,可以使用openpyxl库(对于.xlsx文件)或xlrd库(对于.xls文件)。
import openpyxl
def 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 csv
def 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 yaml
def 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 yaml
def read_yaml(file_path):
with open(file_path, 'r', encoding='utf-8') as file: # 确保文件编码为utf-8,以支持中文
data = yaml.safe_load(file)
return data
data = read_yaml('example.yaml')
print(data) # 输出:{'个人信息': {'姓名': '王小明', '年龄': 28}}
2.3.2 列表
# 示例配置文件:example.yaml
喜欢的水果:
- 苹果
- 香蕉
- 樱桃
import yaml
def read_yaml(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
data = yaml.safe_load(file)
return data
data = read_yaml('example.yaml')
print(data) # 输出:{'喜欢的水果': ['苹果', '香蕉', '樱桃']}
2.3.3 混合类型
# 示例配置文件:example.yaml
个人资料:
姓名: 王小明
年龄: 28
爱好:
- 阅读
- 游泳
住址:
街道: 789 大街
城市: 未来城
import yaml
def read_yaml(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
data = yaml.safe_load(file)
return data
data = read_yaml('example.yaml')
print(data) # 输出:{'个人资料': {'姓名': '王小明', '年龄': 28, '爱好': ['阅读', '游泳'], '住址': {'街道': '789 大街', '城市': '未来城'}}}
2.3.4 包含列表的字典
# 示例配置文件:example.yaml
人员列表:
- 姓名: 王小明
年龄: 28
- 姓名: 李小红
年龄: 25
import yaml
def read_yaml(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
data = yaml.safe_load(file)
return data
data = read_yaml('example.yaml')
print(data) # 输出:{'人员列表': [{'姓名': '王小明', '年龄': 28}, {'姓名': '李小红', '年龄': 25}]}
2.3.5 包含字典的列表
# 示例配置文件:example.yaml
用户数据:
- 用户: 小明
编号: 1
- 用户: 小红
编号: 2
import yaml
def read_yaml(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
data = yaml.safe_load(file)
return data
data = read_yaml('example.yaml')
print(data) # 输出:{'用户数据': [{'用户': '小明', '编号': 1}, {'用户': '小红', '编号': 2}]}
2.3.6 复杂嵌套
# 示例配置文件:example.yaml
公司信息:
名称: xx科技有限公司
员工:
- 姓名: 王小明
职位: 开发人员
- 姓名: 李小红
职位: 经理
地址:
街道: 1010 月光路
城市: 月光城
import yaml
def read_yaml(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
data = yaml.safe_load(file)
return data
data = read_yaml('example.yaml')
print(data) # 输出:{'公司信息': {'名称': 'xx科技有限公司', '员工': [{'姓名': '王小明', '职位': '开发人员'}, {'姓名': '李小红', '职位': '经理'}], '地址': {'街道': '1010 月光路', '城市': '月光城'}}}
2.4 读取JSON文件
读取JSON文件可以使用Python内置的json模块。
import json
def 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 ET
def 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.text
data.append(record)
return data
链接:https://blog.csdn.net/weixin_48321392/article/details/142934508
本文经授权转载,转载文章所包含的文字来源于作者。如因内容或版权等问题,请联系进行删除
点击下方“阅读原文”,寻找职业新风向~