swagger python自动化用例_自动生成robot自动化测试用例
#!/usr/bin/env python
"""解析swagger接口返回值自动生成接口自动化用例
将新增的用例写入到文件末尾,已存在的用例则不重新写入"""
importrequestsimportjsonimportsysdef auto_create_robotcase(filename='robot.txt', url='http://test-customer-api.chuxingyouhui.com/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])
swagger python自动化用例_自动生成robot自动化测试用例相关推荐
- swagger python自动化用例_swagger 自动生成接口测试用例
importrequestsimportos, jsonfrom common.writeExcel import Write_excel #写入excel模块 from common.logger ...
- swagger python自动化用例_如何让Swaggergenerated Python客户机正常工作?
我已经从https://editor.swagger.io/生成了python客户机和服务器,服务器没有任何编辑就可以正常运行,但是我似乎无法让客户机与它或任何东西进行通信.在 我怀疑我在做一些非常愚 ...
- 测试用例怎么写_如何高效组织自动化测试用例
新书 速递 吴老的java版<selenium webdriver 实战宝典>和python版<selenium Webdriver 3.0 自动化测试框架实战指南>出版了,代 ...
- python实现处理swagger接口文档,转换为yaml格式的自动化用例
前言 之前有很多小伙伴反馈,希望我出一期 将swagger文档转换为 yaml格式的自动化用例,那么本期福利来咯~~这一篇文档,将会带领你们实现 如何通过 swagger文档转换为 yaml格式的用例 ...
- 使用python编写一个完整的接口自动化用例
使用python编写一个完整的接口自动化用例 以聚合数据的 查询天气接口为例: import requestsclass HttpRequests: def __init__(self,url, pa ...
- 移动测试架构演进 | 蚂蚁金服自动化用例管理探索
作者:周力(问瑾),蚂蚁金服技术专家.本文围绕支付宝面向移动应用日志复杂的测试工作,如何思考演进出成熟稳定的测试用例管理展开讨论和总结. 相比普通测试用例,自动化用例在形式.实现方式及内容上有一定的特 ...
- 自动化用例设计原则+web自动化框架
自动化用例设计原则 web自动化框架 PO模式就是页面对象和测试用例的分离. PageObjects放页面对象,封装元素定位和元素操作(也可以单独把元素定位放到PageLocators层) basep ...
- 自动化测试用例设计原则(接口自动化用例设计的基本原则)
自动化测试用例设计原则: 1.一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器. 2.一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统 3.尽量只做 ...
- WEB自动化测试用例如何设计?如何提高WEB自动化用例脚本的稳定性
用例设计: 自动化用例是从功能测试用例里面提取出来的,主要提取的是冒烟用例和回归测试的用例,提取需要遵守一下的原则. 1,优先覆盖核心功能用例,核心流程用例. 2,尽量不要选复杂的用例. 3,选取一些 ...
最新文章
- 二叉树的四种遍历方式(递归和非递归双重实现)
- 注解默认继承_默认方法和多重继承
- 如何用html构建ios应用,使用HTML5构建iOS原生APP(5)
- 给被Access过大问题困扰的网站,提供几种解决方案
- centos 7和centos6修改默认启动模式的方法
- ClassPathResource详解
- html按钮功能的实现原理,触摸按键原理是什么 触摸按键原理介绍【图文详解】...
- 用大数据感知美德的力量
- 华为路由器怎么配置DNS?
- 概率论与数理统计学习笔记——第7讲——连续型随机变量(2.5.4指数分布及其与泊松分布的关系)
- 单表七千六百万数据量(oracle)进行实时汇总,sql很慢客户不能忍一下,该怎么办?
- 如何扩大营销卖蜂蜜?
- 全志T507核心板常见问题解析
- Elastic-Job简介和理解
- mysql 半同步 原理_MySQL半同步复制原理与配置详解
- opencv mat 类型转换 CV_32FC1--CV_8U
- javascript实现文本框只能输入数字和字母
- 38.6歌曲计算机,目前最火的6首歌曲, 38度6垫底, 沙漠骆驼第二, 第一百听不厌
- 吴敬琏:我国城市化主要问题是效率太低-吴敬琏-城市化-效率太低
- linux东软培训答案,大连东软信息学院09级LINUX期中试卷及答案