python接口测试——n个示例

1、从sql读取需要的内容,作为接口的请求参数的一部分,生成请求的body,再去请求接口

 1 import requests
 2 import pymysql
 3 import json
 4 
 5 
 6 conn = pymysql.connect(host="172.16.11.118", port=3306, user="root", passwd="123456", db="digital_energy_base")
 7 cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
 8 
 9 
10 sql="select * from t_bus_col_point where base=1"
11 cur.execute(sql)
12 points=cur.fetchall()
13 
14 url="http://172.16.11.118/api/collect-template"
15 headers = {
16     "Content-Type": "application/json;charset=UTF-8",
17     "Cookie": "JSESSIONID=8872E9F8CE58A9D3944D775F01F26534; SIGN=bearer d00c39c6c8b040bba333debd5d9014ee",
18 
19 }
20 
21 body={
22     "name": "sf_modbus120-2",
23     "protocol": "MODBUS_TCP",
24     "remark": "",
25     "points": [
26 
27     ]
28 }
29 
30 
31 for index,point in enumerate(points):
32     # print(index,point)
33     body["points"].append(
34         {
35 
36             "pointName": point["name"],
37             "mappingName":  point["name"],
38             "remark":  point["remark"],
39             "storageGranularity": "SECOND",
40             "readInterval": 10,
41             "functionCode": "03",
42             "dataAddress": f"{index*2}",
43             "dataType": "FLOAT32_BADC",
44             "calculateType": point["calculate_type"],
45             "calculateTypeName": point["calculate_type"],
46             "unit":  point["unit"],
47         }
48     )
49 requests.post(url,json=body,headers=headers)
View Code

 2、递归,不停地找子级里面的key

 1 import requests
 2 
 3 headers = {
 4     "Content-Type": "application/json;charset=UTF-8",
 5     "Cookie": "LOGINED=true; SESSION=NzRlNzUwZjUtNGUyYS00MTM4LTllZjMtMzUwOTkwZTMzMTAz"
 6 }
 7 
 8 
 9 
10 url2 = "https://platform-api.test.in.chinawyny.com/v1/utilize-electricity-bms/utilize/organization/tree/7E854B311C0EAFE0E05010AC170B73FB"
11 rs2=requests.get(url=url2,headers=headers)
12 
13 
14 data=rs2.json()['data']
15 keyList=[]
16 def getKey(data,keyList):
17     for a in data:
18         if a['children']==[]:
19             keyList.append(a['key'])
20             key=a['key']
21             urlDeleteOrg = f'''https://platform-api.test.in.chinawyny.com/v1/utilize-electricity-bms/utilize/organization/7E854B311C0EAFE0E05010AC170B73FB/{key}'''
22             requests.delete(url=urlDeleteOrg,headers=headers)
23         if a['children'] != []:
24             getKey(a['children'], keyList)
25     return keyList
26 
27 res=getKey(data,keyList)
28 print(res)
29 
30 def keepDelete():
31     rs2 = requests.get(url=url2, headers=headers)
32     while rs2.json()['data']!=[]:
33         pass
View Code

 3、读取swagger的接口数据,写入excel

 1 import requests
 2 import pandas as pd
 3 
 4 # url='https://api.test.in.chinawyny.com/file-server/v2/api-docs?group=manager'
 5 url='http://172.16.11.85:38120/v2/api-docs'
 6 
 7 res=requests.get(url=url)
 8 
 9 definitions=res.json()['definitions']
10 print(definitions)
11 
12 
13 paths=res.json()['paths']
14 print(paths)
15 
16 
17 path_list=[]
18 method_list=[]
19 tags_list=[]
20 summary_list=[]
21 parameters_list=[]
22 
23 for path in paths.keys():
24     #拆分每个接口的字段
25     #接口的地址
26     full_path='http://172.16.11.85:38120'+path
27     path_list.append(full_path)
28 
29     #获取每个接口对应的总内容
30     value=paths[path]
31     # 获取请求方式列表
32     method=list(value.keys())[0]
33     method_list.append(method)
34 
35     #获取标签列表
36     tags_list.append(value[method]['tags'][0])
37 
38     #获取描述列表
39     summary_list.append(value[method]['summary'])
40 
41     #获取请求参数列表
42     consumes=value[method]['consumes'][0]
43     if consumes=='multipart/form-data':
44         parameter=value[method]['parameters']
45     elif consumes=='application/json':
46         if 'schema'in list(value[method]['parameters'][0].keys()):
47             if '$ref'in list(value[method]['parameters'][0]['schema'].keys()):
48                 parameter_ref=value[method]['parameters'][0]['schema']['$ref'][14:]
49                 parameter=definitions[parameter_ref]['properties']
50             else:
51                 parameter=value[method]['parameters']
52         else:
53             parameter = value[method]['parameters']
54     else:
55         parameter=None
56     parameters_list.append(parameter)
57     print('---------------------------------'+consumes)
58     print(path)
59     print(method)
60     print(value[method]['tags'][0])
61     print(value[method]['summary'])
62     print(parameter)
63 
64 df=pd.DataFrame({
65     '接口':path_list,
66     '请求方式':method_list,
67     '标签':tags_list,
68     '描述':summary_list,
69     '请求参数':parameters_list
70 },)
71 
72 df.index.name='id'
73 df.to_excel('get-swagger-api.xlsx',index=True,columns=['接口','请求方式','标签','描述','请求参数'],header=True,startcol=0,startrow=0)
View Code

 

posted @ 2024-07-17 14:29  hushuer  阅读(40)  评论(0)    收藏  举报