如何在蝗虫中执行网络身份验证?

How to perform web-auth in locust?

我正在查看 Locust Documentation,配置中的标志之一是

 --web-auth WEB_AUTH   Turn on Basic Auth for the web interface. Should be
                        supplied in the following format: username:password

我查看了它的 github 存储库以了解如何使用此功能,locust/main.py 中的相关部分具有以下代码

web_ui = environment.create_web_ui(
                host=web_host,
                port=options.web_port,
                auth_credentials=options.web_auth,
                tls_cert=options.tls_cert,
                tls_key=options.tls_key,
                stats_csv_writer=stats_csv_writer,
                delayed_start=True,
            )

我也查看了 pull request that enabled this flag. In the tests,我看到传入了硬编码用户 id/password。

这并没有给我关于如何在蝗虫中使用网络身份验证的好主意,因为我期望网络身份验证的处理函数接收 user/password 组合 returns true/falseroles 为组合,但我没有看到任何这样的东西。

我在这里遗漏了什么吗?

Locust 的 --web-auth 参数与启用使用 Locust 网络所需的身份验证有关 UI,以保护网站安全,而不只是任何有权访问您所在位置的人 运行 来自的蝗虫可能会扰乱您的测试或查看结果。访问 Locust UI 时需要您指定的用户名和密码。它旨在为单个用户提供一种快速简便的保护方式,因此它只需要一个用户名和密码。

如果您正在寻找如何在您的测试中使用 Basic Auth 进行网络请求,Locust is based on Python Requests 那么这样的事情应该有所帮助:

https://www.geeksforgeeks.org/authentication-using-python-requests/

编辑: Locust UI 并不是真正为开箱即用的多个用户设计的。根据我的经验,访问 UI 的最后一个用户会得到一个工作页面,而之前一直在工作的任何其他人都会因奇怪的行为而中断,包括数据不一致或没有数据。我通过在 UI 前面设置一个 nginx 反向代理来解决它。您可以这样做,让 nginx 代替 Locust 本身执行身份验证。这样的事情可能会奏效:

https://www.tecmint.com/setup-nginx-basic-http-authentication/