1 # coding=gbk
2
3 # Create your tests here.
4
5 import requests, re, json, math
6
7 # 设置全局session变量
8 r_session = requests.session()
9
10 #登录账户
11 username = 'admin'
12
13 #登录密码
14 password = '111111'
15
16 #登录ip
17 ip = 'localhost'
18
19 #登录port
20 port = '8088'
21
22 #模型总数
23 num = 1679
24
25 #调用登录接口,向session中插入登录状态
26 def login():
27 login_headers = {
28 'Accept': '*/*',
29 'Accept-Encoding': 'gzip, deflate',
30 'Accept-Language': 'zh-CN,zh;q=0.9',
31 'Connection': 'keep-alive',
32 'Content-Length': '40',
33 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
34 'Host': '{ip}:{port}'.format(ip=ip, port=port),
35 'Origin': 'http://{ip}:{port}'.format(ip=ip, port=port),
36 'Referer': 'http://{ip}:{port}/login'.format(ip=ip, port=port),
37 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
38 'X-Requested-With': 'XMLHttpRequest'
39 }#设置登录请求头
40 login_data = {"username": username, "password": password}#设置登录请求体
41 r = r_session.post('http://{ip}:{port}/login'.format(ip=ip, port=port), headers=login_headers, data=login_data)#发送登录请求
42
43 #获取系统中的所有模型id
44 def get_model_id(num):
45 modelnum = math.ceil(num/100)
46 model_id = []#用于存储所有的模型id
47 model_headers = {'Content-Type': 'application/json'}
48 for x in range(modelnum):
49 x *= 100
50 r = r_session.get(
51 "http://{}:{}/model/list?limit=100&offset={}&sortName=updatetime&sortOrder=desc&name=&id=&status=".format(ip, port,
52 x), headers=model_headers).text
53 r = json.loads(r)
54 rows = r.get("rows")
55 for i in rows:
56 model_id.append(i.get("id"))
57 return model_id
58
59 #获取所有的错误信息
60 def get_error(model_id):
61 repeat_id = []#用于存储所有的错误信息
62 for model_id_detail in model_id:
63 model_detail = r_session.get('http://{ip}:{port}/model/modify/'.format(ip=ip, port=port) + str(model_id_detail)).text
64 edbmodel = re.findall(r'^<input id="edbModel" type="hidden" value="(.*?)" />$', model_detail, re.M)
65 edbmodel = edbmodel[0]
66 edbmodel = edbmodel.replace('"', '').replace(',,', ',').replace('\\', '')
67 edbmodel = re.findall(r'indicatorId:(?P<indicatorId>\d*?),indicatorName:.*?\[(?P<indicatorName>\d*?)\]', edbmodel, re.M)
68 for model in edbmodel:
69 if model[0] != model[1]:
70 model_error = str(model_id_detail) #+ ':' + str(model[0]) + ':' + str(model[1])#将错误模型、错误指标id、正确指标id进行拼接
71 repeat_id.append(model_error)
72 print(repeat_id)#打印错误信息
73 print(len(repeat_id))#打印错误信息长度
74
75 if __name__ == '__main__':
76 login()#将登录状态保存在session中
77 model_id = get_model_id(num)#将所有的模型id以列表的形式保存在model_id中
78 get_error(model_id)#获取错误信息