测试工具(9)rap2导出脚本api化

119 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

大家好~我是小方,欢迎大家关注笋货测试笔记体完记得俾个like

回顾

前面几期我们已经把解析rap2文档数据生成Excel、yaml、jmeter脚本已经实现了,但是这个脚本要怎么开放给小伙伴用呢?总不能让小伙伴在你的电脑执行吧?所以我们引入接口设计,将脚本做成接口,开放给小伙伴使用

后端框架选择

这里我用的是fastapi,小项目跑起来还是挺香的···不过坑也会有的,现阶段问题不大,推荐大家使用~

接口设计分析

  1. 导出文件接口

我们解析rap2文档数据,需要传入项目ID和登录的Cookies(非必传),如果想要只解析对应模块名的,需传入moduleName,目前生成文件有3种方式,那就是定义一个type,分别路由到不同生成方法中。

#接口入参
{
  "projectId": 0,
  "moduleName": "string",
  "type": 0,
  "cookies": "string"
}

返参,将文件下载链接直接返回就好了,将下载链接复制到浏览器即可下载文件

{
    "code": 0,
    "msg": "请求成功",
    "data": "http://127.0.0.1:8080/download/xxxx.yaml"
}
  1. 下载文件接口

直接在url带上文件名,通过文件名访问指定文件,将文件的数据返回即可

image.png

代码实现

导出文件接口接口定义一个数据模型 编写路由函数export,将路由与函数绑定在一起

@router.post('/rap2/export', name='接口文档数据导出')
async def export(body: Rap2Body):
    type = body.type
    project_id = body.projectId
    module_name = body.moduleName
    cookies = body.cookies
    try:
        data, name= Rap2Parse.api_data(project_id, cookies, module_name)
        if type == 1:
            create_excel = CreateCases(name)
            file_name = create_excel.create_file(data)
        elif type == 2:
            file_name = ToYaml.to_yaml(name, data)
        else:
            file_name = ToJmx.to_jmx(name, data)
        url = UrlConfig.DOWNLOAD_URL + file_name
        return dict(code=0, msg='请求成功',data=url)
    except Exception as e:
        return dict(code=500, msg='请求失败',data=str(e))

下载文件路由函数

@router.get("/download/{file_name}",include_in_schema=False)
async def downlaod(file_name: str):
    try:
        file_path = os.path.join(DOWNLOAD_PATH, file_name)  # 文件路径
        return FileResponse(file_path, filename=file_name)
    except Exception as e:
        err = "文件下载报错" + str(e)
        return dict(code=500, msg='请求失败',data=err)

导出文件接口测试:

image.png

是不是觉得用fastapi写一个接口挺快的?官方文档附上:fastapi.tiangolo.com/ 有兴趣可以看看官方文档,上手挺快的~

项目地址:github.com/JokerChat/A…

后续扩展

  • 对接api,做成前端页面,让小伙伴体验更完美

本期介绍了脚本api化相关的接口设计,我哋下次再见👋🏻👋🏻👋🏻俾个like再走啦