【问题标题】:Locust : How to invoke the test through an APILocust:如何通过 API 调用测试
【发布时间】:2014-10-14 20:26:38
【问题描述】:

我想通过 API 调用 Locust 负载测试,以便能够从 CI 工具启动测试。

我没有看到太多关于这种情况的文档,locust API 文档中没有“Runner”或类似的类。

我检查了在 Windows 中安装后可用的“蝗虫”命令。它是一个 .exe,所以不确定它的作用以及它是如何实际开始测试的

所以,具体的问题是,是否有一个接口可以从另一个 Python 程序开始测试

【问题讨论】:

    标签: python load-testing locust


    【解决方案1】:

    在 shell 上尝试 curl 请求来模拟你的浏览器:

    curl 'http://localhost:8089/swarm' -H 'Cookie: l10n-locale=en_GB; l10n-submitter=; l10n-license-agreed=false; JSESSIONID.7094a8b9=16g03c8dktw4g1x8ag027nbvl5; screenResolution=1280x800' -H 'Origin: http://localhost:8089' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.8,tr;q=0.6' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: */*' -H 'Referer: http://localhost:8089/' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' -H 'X-FirePHP-Version: 0.0.6' --data 'locust_count=5&hatch_rate=1' --compressed
    {"message": "Swarming started", "success": true}ubuntu@ip-172-31-16-111:~$
    

    设置用户和孵化率编辑数据:

    --data 'locust_count=5&hatch_rate=1'
    

    【讨论】:

    • 亲爱的 Mesut,你能告诉我在这种情况下查看结果的方法吗,我如何查看最小、最大、平均响应时间和 req/s。非常感谢。
    • @LeKimTrang 这样您就可以开始运行 locust,然后您可以从http://localhost:8089 检查结果。这是你想做的吗?
    【解决方案2】:

    我喜欢上面 timfeirg 的回答。在使用 locust 时您已经安装了 python 并且我们只需要运行 python 文件的想法很好。 只有timfeirg的代码不起作用,所以修改了一下:

    import requests
    
    lc = 10
    hr = 10
    
    response = requests.post("http://127.0.0.1:8089/swarm", {"locust_count":lc, "hatch_rate":hr})
    print(response.content)
    

    【讨论】:

    • 这给了我“400 Bad Request”。从邮递员那里试过,同样的事情。
    【解决方案3】:

    只需在 locust web UI 中执行您在 python 中执行的操作。

    如果您在 locust UI 中监控网络,您会注意到调用 swarm 只是对 127.0.0.1:8089/swarm 的 GET 请求,带有两个参数,locust_counthatch_rate

    为了回答您的问题,这是您要求的 api 和示例:

    import requests
    
    payload = {
    'locust_count': 12,
    'hatch_rate': 22,
    }
    
    res = requests.get('http://127.0.0.1:8089/swarm', params=payload)
    print(res.json())
    

    没有测试,如果不起作用,请告诉我。

    【讨论】:

    • Locust 实际上需要一个 POST 请求,但更改后它工作正常。
    【解决方案4】:

    目前,除了命令行界面外,没有记录在案的用于控制 locust 的 API。 CLI 可用于开始运行负载测试,但目前无法在没有 Web UI 的情况下运行 locust。

    您还可以将 Web UI 作为 API 使用,只需发出 HTTP 请求,浏览器发送到 Web UI,您自己从您的程序。

    在 Windows 中(通过 python 的 setuptools)创建的 locust.exe 文件只是一个小包装器,它将在 locust/main.py 中运行 main()

    【讨论】:

    • 不,它没有改变。您引用的 API 文档是您在编写测试脚本时使用的 API。问题是关于从另一个 python 脚本调用/启动 Locust。
    猜你喜欢
    • 2021-03-18
    • 2021-03-24
    • 2019-01-04
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2016-02-03
    • 2017-04-14
    • 2020-01-02
    相关资源
    最近更新 更多