Python将excel测试用例导出为yaml文件

一、需求背景

在开发测试工具的过程中,需要将excel文件格式的测试用例导出为yaml文件格式

测试用例excel文件示例如下:

Python将excel测试用例导出为yaml文件_excel

二、方案对比

1.使用pandas读取excel文件,再将dataframe转换为yaml文件

2.tablib读取excel文件,再将dataset导出为yaml文件

pandas并不支持直接将dataframe导出为yaml,需要使用pyyaml库辅助

tablib为查阅资料后发现,可直接将dataset导出为yaml文件

三、代码实现

pandas方法

读取excel转换为字典

import pandas as pd
import yaml


def excel_to_yaml_pd(path, target):
    df = pd.read_excel(path)  # pandas读取excel
    data_dict = df.to_dict()  # 转换为字典
    print(data_dict)


if __name__ == "__main__":
    file_path = '用例模版.xlsx'
    target_path_pd = 'target_pd.yaml'
    excel_to_yaml_pd(file_path, target_path_pd)

Python将excel测试用例导出为yaml文件_excel_02

运行后发现读取结果中包含nan,使用fillna()方法处理

data_dict = df.fillna('').to_dict(orient='index')  # 填充NAN值,转换为字典

Python将excel测试用例导出为yaml文件_tablib_03

字典数据写入yaml文件

with open(target, 'w', encoding='utf-8') as f:  # 数据写入yaml文件
    yaml.dump(data_dict, stream=f)

Python将excel测试用例导出为yaml文件_yaml_04

为了更直观查看保存的yaml文件,在写入yaml时添加allow_unicode和sort_keys参数

import pandas as pd
import yaml


def excel_to_yaml_pd(path, target):
    df = pd.read_excel(path)  # pandas读取excel
    data_dict = df.fillna('').to_dict(orient='index')  # 填充NAN值,转换为字典
    with open(target, 'w', encoding='utf-8') as f:  # 数据写入yaml文件
        yaml.dump(data_dict, stream=f, allow_unicode=True, sort_keys=False)


if __name__ == "__main__":
    file_path = '用例模版.xlsx'
    target_path_pd = 'target_pd.yaml'
    excel_to_yaml_pd(file_path, target_path_pd)

Python将excel测试用例导出为yaml文件_数据转换_05

tablib方法

读取excel后直接转换为yaml

from tablib import Dataset


def excel_to_yaml_tab(path, target):
    with open(path, 'rb') as f:  # 从excel导入数据
        source_data = Dataset().load(f)
    with open(target, 'w', encoding='utf-8') as f:  # 导出为yaml
        f.write(source_data.yaml)  # xlsx xls json csv html markdown
    # a = source_data.export('yaml')


if __name__ == "__main__":
    file_path = '用例模版.xlsx'
    target_path_tab = 'target_tab.yaml'
    excel_to_yaml_tab(file_path, target_path_tab)

Python将excel测试用例导出为yaml文件_tablib_06

tablib还支持导出为其它格式:xlsx、xls、json、csv、html、markdown等

上一篇:jQuery 表单事件与遍历详情


下一篇:prometheus学习笔记之进程监控process_exporter