V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
fuckgfwfuckgfw
V2EX  ›  分享创造

Frank 是一个 HTTP REST API 自动化测试工具, 像 Postman, 但是命令行版

  •  
  •   fuckgfwfuckgfw · 2017-11-23 10:36:23 +08:00 · 3713 次点击
    这是一个创建于 2549 天前的主题,其中的信息可能已经有所发展或是发生改变。
    # 创建测试用例
    $ vim case.frank
    
    url="https://httpbin.org"
    
    // 一个 POST 请求
    POST /post Post json data
    header["Accept"] = "application/json"
    header["Content-Type"] = "application/json"
    json.key0 = "value0"
    json.key1 = "value1"
    list=[]
    list.push("value3")
    list.push("value4")
    json.key2 = list
    
    Response
    must(status==200)
    j = JSON.parse(body)
    myip = j.origin // 创建个新变量
    
    // 一个 GET 请求
    GET /etag/:myip Just a GET request
    query.key0 = myip // 使用之前创建的变量
    
    Response
    must(status==200)
    
    # 运行测试用例
    $ frank
    

    Github: https://github.com/txthinking/frank

    第 1 条附言  ·  2017-11-23 13:00:56 +08:00
    # 自动生成Markdown接口文档
    $ frank -m > api.md
    
    第 2 条附言  ·  2017-11-23 13:12:57 +08:00

    case.frank 可兼容javascript

    第 3 条附言  ·  2017-11-24 20:52:47 +08:00
    16 条回复    2017-11-24 20:51:35 +08:00
    fuckgfwfuckgfw
        1
    fuckgfwfuckgfw  
    OP
       2017-11-23 10:50:38 +08:00
    喜欢 Cli 工具的 Linux 和 MacOS 同学可以一叙
    xlvecle
        2
    xlvecle  
       2017-11-23 11:00:34 +08:00
    有没有和 curl 或者 httpie 的对比
    fuckgfwfuckgfw
        3
    fuckgfwfuckgfw  
    OP
       2017-11-23 11:08:23 +08:00
    主要想哪方面的对比
    xwhxbg
        4
    xwhxbg  
       2017-11-23 11:14:08 +08:00
    https://github.com/marcusolsson/tui-go/blob/master/example/http/screenshot.png

    这个才叫类似 postman 吧。。。。你这还要写脚本呢
    fuckgfwfuckgfw
        5
    fuckgfwfuckgfw  
    OP
       2017-11-23 11:14:26 +08:00
    ### 一开始测试 API,自己是写 curl 的 wrapper。

    类似这样 api.sh
    ```
    ...
    for((i=1;i<=$#;i++))
    do
    a=$(eval echo \$$i)
    # method
    if [ $i -eq 1 ]
    then
    method=$a
    case $a in
    'get')
    m='-G'
    ;;
    'post')
    m='-X POST'
    ;;
    'put')
    m='-X PUT'
    ;;
    'delete')
    m='-X DELETE'
    ;;
    esac
    continue
    fi
    ...
    ```
    慢慢的发现还是不太方便

    ### 于是就用 Postman MacOS Client

    但是请求经常卡住,而且不太习惯 GUI 总得点来点去

    ### 于是 Frank 就出现了

    写一个文本,然后自动运行,check
    fuckgfwfuckgfw
        6
    fuckgfwfuckgfw  
    OP
       2017-11-23 11:15:38 +08:00
    @xwhxbg You are right.
    0ZXYDDu796nVCFxq
        7
    0ZXYDDu796nVCFxq  
       2017-11-23 11:25:18 +08:00
    感觉 Python + requests 封装一下,功能、便捷性、可扩展性都更好……

    命令行的话,还是写单元测试和回归测试比较靠谱
    xionger
        8
    xionger  
       2017-11-23 11:30:50 +08:00 via Android   ❤️ 2
    JS 语法,不错
    iyaozhen
        9
    iyaozhen  
       2017-11-23 11:35:49 +08:00 via Android
    这样的话有个问题,有些业务逻辑的接口不好写吧。比如接口间依赖,需要生成 token 啥的
    iyaozhen
        10
    iyaozhen  
       2017-11-23 11:37:07 +08:00 via Android
    @gstqc 我就是这样搞的,实际感觉还行
    https://cn.v2ex.com/t/398010#reply6
    fuckgfwfuckgfw
        11
    fuckgfwfuckgfw  
    OP
       2017-11-23 12:32:44 +08:00
    @xwhxbg GUI 或者 这个 TUI, 还是 CLI, 看自己习惯吧
    xionger
        12
    xionger  
       2017-11-23 12:35:28 +08:00
    @iyaozhen

    正在用,可以这样

    POST /api/auth/code 登录发送验证码
    header["Accept"] = "application/json"
    header["Content-Type"] = "application/json"
    json.Mobile = "+8613800138008"

    Response
    must(status==200)
    j = JSON.parse(body)
    _Token = j._Token

    POST /api/auth 登录
    header["Accept"] = "application/json"
    header["Content-Type"] = "application/json"
    json.Mobile = "+8613800138008"
    json._Token = _Token
    json._Code = "1111"

    Response
    must(status==200)
    weakish
        13
    weakish  
       2017-11-23 12:53:48 +08:00
    IntelliJ 也有类似的功能,还可以直接把请求什么的写文件,批量跑。
    fuckgfwfuckgfw
        14
    fuckgfwfuckgfw  
    OP
       2017-11-23 13:00:06 +08:00
    @weakish 嗯 属于 IDE。
    这个算是给喜欢在纯命令行下工作的同学一个选择吧。
    fuckgfwfuckgfw
        15
    fuckgfwfuckgfw  
    OP
       2017-11-23 13:02:02 +08:00   ❤️ 1
    还可以生成根据 case 文件自动生成 markdown 接口文档

    ```
    # 自动生成 Markdown 接口文档
    $ frank -m > api.md
    ```
    fuckgfwfuckgfw
        16
    fuckgfwfuckgfw  
    OP
       2017-11-24 20:51:35 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2606 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:47 · PVG 09:47 · LAX 17:47 · JFK 20:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.