本地运行测试
要在本地运行测试,您可以使用与 Jenkins 运行整个测试套件时相同的 docker 镜像。运行完整的测试套件首先会执行一些静态检查,然后使用不同版本的 Python 和不同的 Web 框架运行实际测试。有关测试矩阵和支持版本的完整概述,请参阅 Jenkins 配置。
我们在每次提交时运行 git hook,以自动指出代码中的问题。这些问题也会在 GitHub Actions 中被检测到。请遵循 https://pre-commit.git-scm.cn/#install 中所述的安装步骤。
我们运行两个代码静态检查工具:isort
和 flake8
。您可以通过运行以下命令在本地触发其中任何一个:
$ 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.6
或 pypy-2
。framework
的格式必须是 framework-version
,例如 django-1.10
或 flask-0.12
。
您也可以在 docker 外部运行单元测试,方法是安装相关的requirements file,然后从项目根目录运行 py.test
。
查看 https://github.com/elastic/apm-integration-testing 以获取设置完整端到端测试环境的资源。例如,要启动一个包含 opbeans Django app、7.3 版的 Elastic Stack 以及您本地检出的 apm-python-agent 的环境,您可以执行以下操作:
$ ./scripts/compose.py start 7.3 \
--with-agent-python-django --with-opbeans-python \
--opbeans-python-agent-local-repo=~/elastic/apm-agent-python