#!/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自动化测试用例相关推荐

  1. swagger python自动化用例_swagger 自动生成接口测试用例

    importrequestsimportos, jsonfrom common.writeExcel import Write_excel #写入excel模块 from common.logger ...

  2. swagger python自动化用例_如何让Swaggergenerated Python客户机正常工作?

    我已经从https://editor.swagger.io/生成了python客户机和服务器,服务器没有任何编辑就可以正常运行,但是我似乎无法让客户机与它或任何东西进行通信.在 我怀疑我在做一些非常愚 ...

  3. 测试用例怎么写_如何高效组织自动化测试用例

    新书 速递 吴老的java版<selenium webdriver 实战宝典>和python版<selenium Webdriver 3.0 自动化测试框架实战指南>出版了,代 ...

  4. python实现处理swagger接口文档,转换为yaml格式的自动化用例

    前言 之前有很多小伙伴反馈,希望我出一期 将swagger文档转换为 yaml格式的自动化用例,那么本期福利来咯~~这一篇文档,将会带领你们实现 如何通过 swagger文档转换为 yaml格式的用例 ...

  5. 使用python编写一个完整的接口自动化用例

    使用python编写一个完整的接口自动化用例 以聚合数据的 查询天气接口为例: import requestsclass HttpRequests: def __init__(self,url, pa ...

  6. 移动测试架构演进 | 蚂蚁金服自动化用例管理探索

    作者:周力(问瑾),蚂蚁金服技术专家.本文围绕支付宝面向移动应用日志复杂的测试工作,如何思考演进出成熟稳定的测试用例管理展开讨论和总结. 相比普通测试用例,自动化用例在形式.实现方式及内容上有一定的特 ...

  7. 自动化用例设计原则+web自动化框架

    自动化用例设计原则 web自动化框架 PO模式就是页面对象和测试用例的分离. PageObjects放页面对象,封装元素定位和元素操作(也可以单独把元素定位放到PageLocators层) basep ...

  8. 自动化测试用例设计原则(接口自动化用例设计的基本原则)

    自动化测试用例设计原则: 1.一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器. 2.一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统 3.尽量只做 ...

  9. WEB自动化测试用例如何设计?如何提高WEB自动化用例脚本的稳定性

    用例设计: 自动化用例是从功能测试用例里面提取出来的,主要提取的是冒烟用例和回归测试的用例,提取需要遵守一下的原则. 1,优先覆盖核心功能用例,核心流程用例. 2,尽量不要选复杂的用例. 3,选取一些 ...

最新文章

  1. 二叉树的四种遍历方式(递归和非递归双重实现)
  2. 注解默认继承_默认方法和多重继承
  3. 如何用html构建ios应用,使用HTML5构建iOS原生APP(5)
  4. 给被Access过大问题困扰的网站,提供几种解决方案
  5. centos 7和centos6修改默认启动模式的方法
  6. ClassPathResource详解
  7. html按钮功能的实现原理,触摸按键原理是什么 触摸按键原理介绍【图文详解】...
  8. 用大数据感知美德的力量
  9. 华为路由器怎么配置DNS?
  10. 概率论与数理统计学习笔记——第7讲——连续型随机变量(2.5.4指数分布及其与泊松分布的关系)
  11. 单表七千六百万数据量(oracle)进行实时汇总,sql很慢客户不能忍一下,该怎么办?
  12. 如何扩大营销卖蜂蜜?
  13. 全志T507核心板常见问题解析
  14. Elastic-Job简介和理解
  15. mysql 半同步 原理_MySQL半同步复制原理与配置详解
  16. opencv mat 类型转换 CV_32FC1--CV_8U
  17. javascript实现文本框只能输入数字和字母
  18. 38.6歌曲计算机,目前最火的6首歌曲, 38度6垫底, 沙漠骆驼第二, 第一百听不厌
  19. 吴敬琏:我国城市化主要问题是效率太低-吴敬琏-城市化-效率太低
  20. linux东软培训答案,大连东软信息学院09级LINUX期中试卷及答案

热门文章

  1. Exception Type: IntegrityError 数据完整性错误
  2. SolrCloud Hello Word
  3. 亚马逊率先用Sun新推OpenSolaris系统
  4. Intel微处理器列表_百度百科
  5. CCF201803-2 碰撞的小球(100分)【模拟】
  6. I00034 累加与累乘
  7. HDU5620 KK's Steel【菲波拉契数列+水题】
  8. I00008 百鸡问题
  9. 异常值检测 —— MAD(median absolute deviation)
  10. C++中的萃取机制(traits)