环境准备
Pytest 负责 Python 代码测试
Allure 负责测试报告 HTML 界面展示
Jenkins 负责自动化
测试
安装完后,可以先来使用一下
找一个使用 Pytest 的项目,直接去 github 拉取 requests 库,它的 tests 目录写满了通过 pytest 构建的测试用例。
通过 pytest 运行 requests/tests 中的代码并通过 --alluredir 指定生成数据的文件夹,这些数据就是 allure 可读取的数据,通常为一堆 JSON 文件。
获得 JSON 文件数据后,可以通过 allure generate 命令来生成 HTML 测试报告界面。
pytest requests/tests --alluredir=./allure-results
allure generate allure-results -o allure-report --clean
接着来安装 Allure 在 Jenkins 中的插件。
还需要进行配置,进入「系统设置」->「Global Tool Configuration」。
Jenkins 插件安装完后,在 Jenkins 中创建 Freestyle project,Description 描述可以随便填写,在 Build 构建处,选择 Execute Shell
#!/bin/bash
cd /Users/ayuliao/Desktop/workspace/CICD
source venv/bin/activate
pytest requests/tests --alluredir "${WORKSPACE}/target/allure-results"
exit 0
简单而言, --alluredir 必须为 "${WORKSPACE}/target/allure-results",因为 Jenkins 通过插件调用 allure genera 命令时,传入的路径固定为 ${WORKSPACE}/target/allure-results。
${WORKSPACE} 是 Jenkins 内置的变量,表示「分配给构建作为工作空间的目录的绝对路径。」。
如果 --alluredir 为其他值,通过 Jenkins 构建项目时,会抛出 allure-results does not exists,你可以在「https://github.com/jenkinsci/allure-plugin/issues/201」看见问题的具体细节。
此外,还需要配置 Post-build Actions 构建后的动作,这里也非常关键。
选择「Allure Report」,将 Results 与 Report Path 分别配置成 target/allure-results 与 target/allure-report,这是固定的,不要看其注释说你可以随意配置。
上述配置之所以是固定的,需要看 Jenkins Job 中的 console output,jenkins 调用 allure generate 命令是固定的。
如果将 Results 与 Report Path 配置成其他值,会出现各种问题