在本地运行测试编辑

要在本地运行测试,您可以使用在 Jenkins 中运行整个测试套件时使用的 Docker 镜像。运行完整的测试套件首先会进行一些代码检查,然后使用不同版本的 Python 和不同的 Web 框架运行实际测试。有关测试矩阵和支持版本的完整概述,请参阅Jenkins 配置

预提交编辑

我们在每次提交时运行 git 钩子,以自动指出代码中的问题。这些问题也会在 GitHub 操作中检测到。请按照https://pre-commit.git.js.cn/#install中所述的安装步骤进行操作。

代码检查器编辑

我们运行两个代码检查器:isortflake8。您可以通过运行以下命令在本地触发每一个检查器:

$ pre-commit run -a isort
$ pre-commit run -a flake8

代码格式化程序编辑

我们使用 black 测试代码是否已格式化。您可以通过运行以下命令来触发此检查:

$ pre-commit run -a black

测试文档编辑

我们测试文档是否可以生成而不会出错。您可以通过运行以下命令来触发此检查:

$ ./tests/scripts/docker/docs.sh

运行测试编辑

我们在 Python 版本和 Web 框架的不同组合上运行测试套件。要在本地触发特定组合的测试套件,您可以运行:

$ ./tests/scripts/docker/run_tests.sh python-version framework-version <pip-cache-dir>

python-version 必须采用 python-version 格式,例如 python-3.6pypy-2framework 必须采用 framework-version 格式,例如 django-1.10flask-0.12

您也可以在 Docker 之外运行单元测试,方法是安装相关的需求文件,然后从项目根目录运行 py.test

集成测试编辑

查看https://github.com/elastic/apm-integration-testing,获取有关设置完整端到端测试环境的资源。例如,要使用 7.3 版本的 Elastic Stack 和本地签出的 apm-python-agent 启动一个包含opbeans Django 应用程序的环境,您可以执行以下操作:

$ ./scripts/compose.py start 7.3 \
    --with-agent-python-django --with-opbeans-python \
    --opbeans-python-agent-local-repo=~/elastic/apm-agent-python