众所周知swagger文档存储在api-docs接口中
可以通过http获取接口的响应或者直接copy json的响应到文本中,最终得到的数据都是data
处理逻辑如下:
with open("1.txt",'r',encoding='utf8') as f:
data = f.read()
data = json.loads(data)
basePath = data['basePath']
paths = data["paths"]
cases_data = []
for path, methods in paths.items():
for method, details in methods.items():
method = method.upper()
summary = details["summary"]
parameters = details.get("parameters", [])
# 获取headers
headers = {param['name']:"" for param in parameters if param.get("in") == "header"}
# 获取body
rep_body = [param.get('schema').get('originalRef') for param in parameters if param.get("in") == "body"]
body = ''
if rep_body:
dto = data["definitions"].get(rep_body[0])
if dto:
properties = dto.get('properties')
body = properties.copy()
for item,params in properties.items():
for param,value in params.items():
if param == 'items':
new_dto = data["definitions"].get(value['originalRef'])
n_list = [{param:""} for param in new_dto['properties']]
body[item]=n_list
else:
body[item]= ''
# 组装参数
cases_data.append({
"url": basePath+path,
"method": method,
"name": summary,
"headers": headers,
"body": body
})
print("Path:", basePath+path)
print("Method:", method)
print("Name",summary)
print("Headers:")
print(headers)
print("Body:")
print(body)
print("-" * 30)