常见问题解答 (FAQ)
如何解决……
如何控制 HTTP 请求中的头部或其他参数
Locust 中的 HttpUser
客户端继承自 requests,因此大多数 requests
的参数和方法都可以与 Locust 一起使用。首先查阅 requests
文档和 Stack Overflow 中的相关答案,若仍有问题,可以在 Stack Overflow 上询问 Locust 特定的问题。
基本认证(Authorization header)在重定向后不起作用
requests 有一个安全机制,在域名更改时会删除认证头。这通常发生在测试单点登录(SSO)时,SSO 通常位于不同域,并且涉及多个重定向(30x)。
由于 allow_redirects=True
是默认 request
行为,您需要将其关闭,手动处理重定向并重新注入认证头,例如:
response = self.client.post(
allow_redirects=False,
url=...)
while "location" in response.headers:
response = self.client.get(
allow_redirects=False,
url=response.headers['location'],
headers={
'Authorization': 'XXX'
}
)
如何基于录制的浏览器会话创建 Locust 文件
尝试使用 har2locust。
如何在 Windows 子系统(WSL)上运行 Locust 的 Docker 容器(Windows 10 用户)
如果您在 Windows 计算机上使用 WSL,则需要比普通的 docker run …
命令多一个步骤:将 locusttest1.py
文件复制到 Windows 路径下的一个文件夹,并将该文件夹挂载到 WSL 中:
$ mkdir /c/Users/[YOUR_Windows_USER]/Documents/Locust/
$ cp ~/path/to/locusttest1.py /c/Users/[YOUR_Windows_USER]/Documents/Locust/
$ docker run -p 8089:8089 -v /c/Users/[YOUR_Windows_USER]/Documents/Locust/:/mnt/locust locustio/locust:1.3.1 -f /mnt/locust/locusttest1.py
如何在自定义端点上运行 Locust
在 locust/web.py
文件中的所有 @app.route
定义前添加自定义端点,并修改如下(例如 /locust
为新端点):
app = Flask(__name__, static_url_path='/locust')
修改 locust/templates/index.html
中静态内容的路径,例如:
<link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.ico') }}" type="image/x-icon"/>
Locust Web UI 不显示我的任务运行,显示 0 RPS
Locust 只有在您告诉它时才知道发生了什么。使用 事件钩子 可以让 Locust 知道代码中发生了什么。如果您使用 Locust 的 HttpUser
并且通过 self.client
发起 HTTP 调用,Locust 通常会自动触发适当的事件,从而减少您的工作量,除非您需要重写默认事件。
如果您使用的是普通的 User
类或 HttpUser
但不通过 self.client
发起 HTTP 调用,Locust 不会触发事件。您需要自己触发事件。请参阅 Locust 文档了解更多示例。
其他问题和疑问
如果您遇到并解决了问题,可以在这里添加!任何拥有 GitHub 账户的人都可以贡献!
如果您的 Locust 问题没有在这里解答,请查阅 StackOverflow,或者将问题发布到那里。本维基不是用来提问的,而是用来回答问题的 :)