1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > swagger python自动化用例_自动生成robot自动化测试用例

swagger python自动化用例_自动生成robot自动化测试用例

时间:2024-05-16 23:48:19

相关推荐

swagger python自动化用例_自动生成robot自动化测试用例

#!/usr/bin/env python

"""解析swagger接口返回值自动生成接口自动化用例

将新增的用例写入到文件末尾,已存在的用例则不重新写入"""

importrequestsimportjsonimportsysdef auto_create_robotcase(filename='robot.txt', url='http://test-customer-/v2/api-docs'):try:

f= open(filename, 'a+', encoding='utf-8')

f.seek(0, 0)

content=f.read()

f.write('\n')

f.write('\n')

f.write('\n')

r=requests.get(url)print(r.text)#将返回的文本转换成json格式,并取paths部分的值,因为这个部分包含了所有需要的信息

api_docs =json.loads(r.text)

paths= api_docs['paths']

definitions= api_docs['definitions']

k= 1

print(len(paths.items()))for i inpaths.items():print(i)

interface_api=i[0]if interface_api incontent:continueinterface_type= list(i[1].keys())[0]

mode_name= dict(list(i[1].values())[0])['tags'][0]

interface_name= dict(list(i[1].values())[0])['summary']print(str(mode_name) + "模块下第" + str(k) + "个接口为:" + str(interface_name) + "类型为:" +str(

interface_type)+ "URI:" +str(interface_api))

head=[]

data=[]if list(i[1].values())[0].__contains__('parameters'):

params= dict(list(i[1].values())[0])['parameters']for param inparams:

param_name= param['name']

param_position= param['in']

param_required= param['required']print("参数名:", param_name, "参数位置:", param_position, "必填否:", param_required)#有些参数没有描述字段,这里做个判断,有的时候取描述,没有赋空值

if param.get('description'):

param_description= param['description']else:

param_description= ''

ifparam_required:if param_position == 'header':

pa= param_name + "=" +param_description

head.append(pa)elif param_position == 'query':

pa= param_name + "=" +param_description

data.append(pa)elif param_position == 'body':

param_schema= param['schema']if param_schema.get('items'):

define_name= param_schema['items']['$ref'].split('/')[-1]else:

define_name= param_schema['$ref'].split('/')[-1]

data= definitions[define_name]['properties']

case_name= mode_name + "-" +interface_name

f.write(case_name+ '\n')

head_s= ""

for i inhead:

head_s= head_s + " " +str(i)ifhead_s:

create_head= '${headers} Create Dictionary Content-Type=${Content-Type} Accept=${Accept}' +head_selse:

create_head= '${headers} Create Dictionary Content-Type=${Content-Type} Accept=${Accept}'f.write(create_head+ '\n')

create_api= 'Create Session api ${host} ${headers}'f.write(create_api+ '\n')if str(data).startswith("{"):

create_data= '${data} Set Variable' +str(data)else:

data_s= ''

for i indata:

data_s= data_s + ' ' +str(i)

create_data= '${data} Create Dictionary' +data_s

create_params= '${params} Create Dictionary' +data_s

create_get_request= '${result} Get Request api' + interface_api + 'params=${params}'create_get_request_noparams= '${result} Get Request api' +interface_api

create_post_request= '${result} Post Request api' + interface_api + 'data=${data}'create_post_request_noparams= '${result} Post Request api' +interface_apiif interface_type == 'get':ifdata:

f.write(create_params+ '\n')

f.write(create_get_request+ '\n')else:

f.write(create_get_request_noparams+ '\n')else:ifdata:

f.write(create_data+ '\n')

f.write(create_post_request+ '\n')else:

f.write(create_post_request_noparams+ '\n')

create_response= '${response} Set Variable ${result.content}'create_response_to_json= '${response} To Json ${response}'create_assert_code= 'should be equal as integers ${response["code"]} 200'create_assert_msg= 'should be equal ${response["msg"]} 操作成功'f.write(create_response+ '\n')

f.write(create_response_to_json+ '\n')

f.write(create_assert_code+ '\n')

f.write(create_assert_msg+ '\n')

f.write('\n')

k= k + 1f.close()exceptException as e:raiseeif __name__ == "__main__":if len(sys.argv) == 1:

auto_create_robotcase()else:

auto_create_robotcase(sys.argv[1], sys.argv[2])

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。