pytest_api/tools/exceltoyaml_control.py

69 lines
2.0 KiB
Python
Raw Permalink Normal View History

2023-02-02 11:07:43 +08:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/6/2 22:43
# @Author : 郭林莉
#!/usr/bin/python3
import xlrd
from config.settings import ConfigHandler
from ruamel.yaml import YAML
import os
yaml = YAML()
def read_xls(filename):
# 打开Excel文件
data = xlrd.open_workbook(filename)
# 读取第一个工作表和表名
table = data.sheets()[0]
tablesheet = data.sheet_names()[0]
# 统计行数
rows = table.nrows
data = {} # 存放数据
ymal_dirmctory = ConfigHandler.data_path + f'{tablesheet}'
for v in range(1, rows):
values = table.row_values(v)
excel_yaml_path = str(values[10])
print("excel_yaml_path",excel_yaml_path)
yaml_path = ymal_dirmctory+excel_yaml_path[:-2]+'.yaml'
# print('ymal_dirmctory', ymal_dirmctory)
# print('yaml_path', yaml_path)
if not os.path.exists(ymal_dirmctory):
os.mkdir(ymal_dirmctory)
if str(values[0]) == '同上':
pass
else:
data["case_common"]=eval(values[0])
case_name = excel_yaml_path[1:]
print('名字',case_name)
yamlassert = eval(values[11])
if values[7] == '':
data[case_name]={
"host": str(values[1]),
"url": str(values[2]), # 这里我只需要字符型数据加了str(),根据实际自己取舍
"method": str(values[3]),
"detail": str(values[4]),
"headers": eval(values[5]),
"requestType": str(values[6]),
"is_run": True,
"data": eval(values[8]),
"assert": yamlassert,
'sql': ""
}
with open(yaml_path, mode='w', encoding='utf-8') as file:
yaml.dump(data, file)
return data
dmdata = read_xls(ConfigHandler.file_path + r'\stp.xlsx')
print(dmdata)
# print(jsonpath.jsonpath(dddddd,"$..yamlpath"))