爱意满满的作品展示区。
fuckgfwfuckgfw

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

  •  
  •   fuckgfwfuckgfw · Nov 23, 2017 · 4402 views
    This topic created in 3093 days ago, the information mentioned may be changed or developed.
    # 创建测试用例
    $ 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

    Supplement 1  ·  Nov 23, 2017
    # 自动生成Markdown接口文档
    $ frank -m > api.md
    
    Supplement 2  ·  Nov 23, 2017

    case.frank 可兼容javascript

    Supplement 3  ·  Nov 24, 2017
    16 replies    2017-11-24 20:51:35 +08:00
    fuckgfwfuckgfw
        1
    fuckgfwfuckgfw  
    OP
       Nov 23, 2017
    喜欢 Cli 工具的 Linux 和 MacOS 同学可以一叙
    xlvecle
        2
    xlvecle  
       Nov 23, 2017
    有没有和 curl 或者 httpie 的对比
    fuckgfwfuckgfw
        3
    fuckgfwfuckgfw  
    OP
       Nov 23, 2017
    主要想哪方面的对比
    xwhxbg
        4
    xwhxbg  
       Nov 23, 2017
    https://github.com/marcusolsson/tui-go/blob/master/example/http/screenshot.png

    这个才叫类似 postman 吧。。。。你这还要写脚本呢
    fuckgfwfuckgfw
        5
    fuckgfwfuckgfw  
    OP
       Nov 23, 2017
    ### 一开始测试 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
       Nov 23, 2017
    @xwhxbg You are right.
    0ZXYDDu796nVCFxq
        7
    0ZXYDDu796nVCFxq  
       Nov 23, 2017
    感觉 Python + requests 封装一下,功能、便捷性、可扩展性都更好……

    命令行的话,还是写单元测试和回归测试比较靠谱
    xionger
        8
    xionger  
       Nov 23, 2017 via Android   ❤️ 2
    JS 语法,不错
    iyaozhen
        9
    iyaozhen  
       Nov 23, 2017 via Android
    这样的话有个问题,有些业务逻辑的接口不好写吧。比如接口间依赖,需要生成 token 啥的
    iyaozhen
        10
    iyaozhen  
       Nov 23, 2017 via Android
    @gstqc 我就是这样搞的,实际感觉还行
    https://cn.v2ex.com/t/398010#reply6
    fuckgfwfuckgfw
        11
    fuckgfwfuckgfw  
    OP
       Nov 23, 2017
    @xwhxbg GUI 或者 这个 TUI, 还是 CLI, 看自己习惯吧
    xionger
        12
    xionger  
       Nov 23, 2017
    @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  
       Nov 23, 2017
    IntelliJ 也有类似的功能,还可以直接把请求什么的写文件,批量跑。
    fuckgfwfuckgfw
        14
    fuckgfwfuckgfw  
    OP
       Nov 23, 2017
    @weakish 嗯 属于 IDE。
    这个算是给喜欢在纯命令行下工作的同学一个选择吧。
    fuckgfwfuckgfw
        15
    fuckgfwfuckgfw  
    OP
       Nov 23, 2017   ❤️ 1
    还可以生成根据 case 文件自动生成 markdown 接口文档

    ```
    # 自动生成 Markdown 接口文档
    $ frank -m > api.md
    ```
    fuckgfwfuckgfw
        16
    fuckgfwfuckgfw  
    OP
       Nov 24, 2017
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4643 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 01:02 · PVG 09:02 · LAX 18:02 · JFK 21:02
    ♥ Do have faith in what you're doing.