开发和文档编写 Locust

想要为 Locust 做出贡献吗?太好了!这里列出了 开放的 bug 和功能请求

安装 Locust 用于开发

  1. GitHub 上 Fork Locust 仓库,然后执行:

# 克隆仓库:
$ git clone git://github.com/<YourName>/locust.git

# 安装 poetry 构建系统,查看 https://python-poetry.org/docs/#installation

# 安装所需的 poetry 插件:
$ poetry self add "poethepoet[poetry_plugin]"
$ poetry self add "poetry-dynamic-versioning[plugin]"

# 执行 Locust 包的可编辑安装,同时安装开发和测试包:
$ poetry install --with dev,test

现在 poetry run locust 命令将运行您的代码(无需在每次修改后重新安装)。

为了贡献您的修改,将更改推送到您的仓库分支,然后 在 GitHub 上创建一个 PR

如果您安装了 pre-commit,提交时将自动执行代码检查和格式修复。

在打开拉取请求之前,请确保所有测试通过。如果您正在添加功能,确保它在 docs/*.rst 中有文档。

如果您赶时间或无法访问开发环境,您可以简单地使用 GitHub 的云开发环境 Codespaces。在您的 Fork 页面上,只需点击 “Code”,然后点击 “Create codespace on <branch name>”,即可开始编写和测试代码。

测试您的更改

我们使用 tox 来跨多个 Python 版本自动化测试:

tox
...
py39: commands[1]> python3 -m unittest discover
...

要只运行特定的测试套件或测试,可以直接调用 pytest

pytest locust/test/test_main.py::DistributedIntegrationTests::test_distributed_tags

调试

格式化和 linting

Locust 使用 ruff 进行格式化和 lint 检查。如果代码不符合要求,构建将失败。如果您使用 vscode,它将在每次保存文件时自动运行,但如果您的编辑器不支持,您可以手动运行:

ruff --fix <file_or_folder_to_be_formatted>
ruff format <file_or_folder_to_be_formatted>

您可以使用 tox 验证整个项目:

tox -e ruff
ruff: install_deps> python -I -m pip install ruff==0.1.13
ruff: commands[0]> ruff check .
ruff: commands[1]> ruff format --check
104 files already formatted
ruff: OK (1.41=setup[1.39]+cmd[0.01,0.01] seconds)
congratulations :) (1.47 seconds)

构建文档

文档源文件位于 docs/ 目录中。要构建文档,首先需要安装 Locust 用于开发环境,然后

  1. 安装文档相关的依赖:

    poetry install --with docs
  2. 在本地构建文档:

    make build_docs

通过打开 docs/_build/index.html 来查看生成的文档。

修改 Locust 的 Web UI

Web UI 使用 React 和 TypeScript 构建。

设置

Node

使用 nvm 安装 Node,可以轻松切换 Node 版本。

  • 从 nvm 中复制并运行安装命令(以 curl/wget 开头)。

  • 验证 nvm 是否正确安装:

    nvm --version
  • 根据 locust/webui/package.json 中的 engines 配置,安装合适的 Node 版本:

    nvm install {version}
    nvm alias default {version}

Yarn

  • 从 Yarn 官方网站安装 Yarn(尽量避免通过 Node 安装)。

  • 验证 Yarn 是否正确安装:

    yarn --version
  • 接下来,安装所有依赖:

    cd locust/webui
    yarn

开发

要在运行 Locust 实例时进行开发,运行 yarn watch。这会将静态文件输出到 dist 目录,Vite 会自动检测文件更改并重新构建。只需刷新页面即可查看更改。

在某些情况下(通常是样式开发),您可能希望在不运行 Locust 实例的情况下开发前端。运行 yarn dev 将启动 Vite 开发服务器,并允许查看您的更改。

要编译 Web UI,运行:

yarn build

前端也可以使用 make 构建:

make frontend_build

Linting

运行 yarn lint 以检测前端项目中的 lint 错误。运行 yarn lint --fix 将自动修复可以解决的问题。您的 IDE 也可以配置 ESLint,在保存时自动解决这些问题。

格式化

运行 yarn format 来修复前端项目中的格式问题。同样,您的 IDE 可以配置为在保存时自动格式化。

类型检查

前端项目使用 TypeScript。运行 yarn type-check 来查找类型检查中的问题。