HandleData.py
4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# @Time : 2022/8/23 14:45
# @Author : 付孟奇
from util.HandleLog import logger
from util.HandleFile import file_read_global
import xlrd
import json
class DateLoad:
# 读取Excel数据--按行
def load_excel(self, file, tag):
data_list = []
try:
book = xlrd.open_workbook(file)
tag = book.sheet_by_name(tag)
# 获取行数
row_num = tag.nrows
header = tag.row_values(0)
for i in range(1, row_num):
# 读取行
row_data = tag.row_values(i)
# 读取行中的每一列的值
d = dict(zip(header, row_data))
data_list.append(d)
return data_list
except Exception as e:
logger.error('测试用例打开失败,原因是:%s' % e)
# 查找特定key的value信息
def get_value(self, source_json, object_key):
result = []
if isinstance(source_json, dict) and object_key in source_json.keys():
value = source_json[object_key]
result.append(value)
return result
elif isinstance(source_json, (list, tuple)):
for item in source_json:
value = self.get_value(item, object_key)
if value == "None" or value is None:
pass
elif len(value) == 0:
pass
else:
result.append(value)
return result
else:
if isinstance(source_json, dict):
for k in source_json:
value = self.get_value(source_json[k], object_key)
if value == "None" or value is None:
pass
elif len(value) == 0:
pass
else:
for item in value:
result.append(item)
return result
# 处理请求的可变参数
def handle_params(self, args):
try:
if str(args).count('话术变量验证') == 1: # 话术变量场景测试参数特殊处理
from util.HandleSpeech import handle_speech
params_list = str(args).split('-')
args = handle_speech.getRestult(params_list[1])
return json.loads(args)
elif args[0] == '{':
args = json.loads(args)
old_key = [] # 变量的key的集合
old_value = [] # 变量集合
# 遍历请求参数中,所有的变量信息
for k, v in args.items():
if str(v)[0] == '#':
old_key.append(k)
old_value.append(v)
# 替换变量值
if len(old_value) != 0:
logger.info('需要替换的变量信息为:' + str(old_value))
key_dic = {}
for i in old_value:
v_key = str(i[1:]).split('.')
res = file_read_global(v_key)
key_dic[i] = res
logger.info('可变参数的信息为:' + str(key_dic))
# 参数替换
for j in key_dic:
self.dic_del(args, j, key_dic)
logger.info('可变参数替换完毕:' + str(args))
return args
else:
return ''
except:
return {'code': 1, 'result': '参数错误,请检查替换信息是否正确'}
# json格式字典处理
def dic_del(self, data_json, data_key, key_dic):
if isinstance(data_json, dict):
for k, v in data_json.items():
if v == data_key:
data_json[k] = key_dic[data_key]
else:
self.dic_del(v, data_key, key_dic)
elif isinstance(data_json, list):
for i in data_json:
self.dic_del(i, data_key, key_dic)
handle_data = DateLoad()
if __name__ == '__main__':
handle_data.handle_global()