前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >03 提效工具之绕过swagger&yapi接口文档登录

03 提效工具之绕过swagger&yapi接口文档登录

作者头像
测试开发囤货
发布2021-08-11 15:18:22
9300
发布2021-08-11 15:18:22
举报
文章被收录于专栏:测试开发囤货测试开发囤货

回顾

上两篇文章我们介绍了swagger-ui文档转换jmx脚本&yapi文档转换jmx脚本给jmeter使用的方式,已经可以覆盖大多数公司的接口文档转换,可以帮助我们的测试攻城狮解放双手,节省很多时间!

但是还有一个问题,就是有的公司的接口文档是需要登录权限的,我们进行脚本转换时,因为没有登录,导致接口原始数据下载失败,我们的转换工具也无能为力,必须人手动登录成功后下载原始swaggerjson接口数据!

愿景

一键自动生成接口测试脚本,解放双手,降低纯手力劳动占比,进而给自己提供更多的时间去思考、理解产品和设计更多“聪明”的用例

实现效果

今天我们以yapi接口文档为例,写代码自动登录,让我们的脚本去下载接口原始数据然后进行jmx转换!

  • 数据导出选择swaggerjson
  • 查看下载链接的格式
代码语言:javascript
复制
https://apidock.test.com/api/plugin/exportSwagger?type=OpenAPIV2&pid=29&status=all&isWiki=false
  • 我们在控制台F12查看下载请求【需要yapi_token】
  • 接下来我们去获取yapi登录的token
代码语言:javascript
复制
def yapi_cookies():
    url = "https://apidock.test.com/api/user/login_by_ldap"

    payload = "{\"email\":\"test1\",\"password\":******\"\"}"
    headers = {
        'Content-Type': 'application/json; charset=utf-8',
        'Connection': 'keep-alive'
    }

    response = requests.request("POST", url, headers=headers, data=payload)

    log.info(response.headers['Set-Cookie'].split(';')[0])
    return response.headers['Set-Cookie'].split(';')[0]

  • 接下来我们写个request请求去下载文件
代码语言:javascript
复制
def get_yapi_json(pid, path):
    url = "https://apidock.test.com/api/plugin/exportSwagger?type=OpenAPIV2&pid={}&status=all&isWiki=false".format(
        pid)

    headers = {
        'Content-Type': 'application/json; charset=utf-8',
        'Connection': 'keep-alive',
        'cookie': '{}; _yapi_uid=3480'.format(yapi_cookies())
    }
    log.info(headers)
    response = requests.request("GET", url, headers=headers)

    data = json.loads(response.text)
    title = data.get("info")["title"]
    log.info(title)
    with open("{}/data.json".format(path), 'w', encoding='utf-8') as fp:
        fp.write(json.dumps(data, indent=4, ensure_ascii=False))
    return data

  • 安装依赖
代码语言:javascript
复制
pip install -U swaggerjmx
  • 展示代码
代码语言:javascript
复制
# -*- coding: utf-8 -*-

from swaggerjmx.convert import conversion
from swaggerjmx.settings import Settings as ST
#  swagger_url_json_path 
#  从yapi获取的json字符串
ST.swagger_json = get_yapi_json(pid, path)
#  report_path
ST.report_path = 'jmx'
# 开始转换
conversion()
  • 生成脚本文件
  • 脚本展示

以上便是 swaggerjmx 的基本用法介绍。

如果您有发现错误,或者您对 swaggerjmx 有任何建议,欢迎到 swaggerjmx Issues 发表,非常感谢您的支持。您的反馈和建议非常宝贵,希望您的参与能帮助 swaggerjmx 做得更好。

仓库地址:

  • github: https://github.com/Pactortester/swaggerjmx.git
  • pypi:https://pypi.org/project/swaggerjmx

下集预告

  • 可视化部署
  • 更加便捷的使用(赋能)

关注「测试开发囤货」公众号回复「编程」,送你一本全彩 Python 编程电子书。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发囤货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 回顾
  • 愿景
  • 实现效果
  • 仓库地址:
  • 下集预告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档