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)
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
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)

浙公网安备 33010602011771号