Jenkins执行Docker中Selenium测试后Allure报告显示0结果求助
问题根因排查与解决方案
常见原因
- Allure插件路径配置错误:Jenkins Allure插件需要读取的是Allure原始结果目录(通常命名为
allure-results,存放测试用例执行的原始结果文件、附件等),而非生成后的allure-reports静态报告目录。如果插件配置的扫描路径填成了allure-reports,就会识别不到任何用例数据。 - Docker容器结果未持久化到Jenkins工作空间:Selenium用例是在Docker容器内执行的,容器内生成的
allure-results原始结果如果没有通过volume挂载或者docker cp命令复制到Jenkins任务的工作空间下,Allure插件无法访问到容器内的原始结果文件。你提到的allure-reports里的testrun.json、executor.json仅为报告元数据,缺少核心的*-result.json格式用例结果文件,就会显示0条测试结果。 - 原始结果目录权限不足:你仅修改了
allure-reports目录的所有者为Jenkins用户,但如果allure-results原始结果目录的所有者还是root或者其他用户,Jenkins没有读取权限,也会无法识别用例数据。 - 测试框架未配置Allure适配器:Selenium对应的测试框架(TestNG/Pytest/JUnit等)没有集成Allure适配器,执行用例时只会生成原生的测试报告,不会输出Allure可识别的
*-result.json格式用例结果文件,哪怕目录挂载正确也没有有效数据。 - 执行步骤顺序错误:如果先执行Jenkins Allure报告生成步骤,再从Docker容器中复制结果文件到工作空间,Allure插件扫描时结果文件还不存在,也会导致0条结果。
对应解决方法
- 修正Allure插件配置:进入
FEXT_21.4_AUTOMATION任务配置页,找到「Allure Report」配置项,将「Results」路径填写为原始结果目录路径allure-results,不要填allure-reports。 - 配置Docker结果持久化:执行Docker run命令时添加volume挂载参数,将容器内的
allure-results目录映射到Jenkins任务当前工作空间,示例命令:
docker run -v $(pwd)/allure-results:/path/to/container/allure-results [你的其他镜像启动参数]
如果是docker-compose执行,在对应服务下添加volumes配置即可。
3. 修正目录权限:执行chown命令时同时覆盖allure-results目录:
chown -R jenkins:jenkins ./allure-results ./allure-reports
- 补全测试框架Allure集成:根据你使用的测试语言和框架安装对应Allure适配器,比如Python+Pytest环境安装
allure-pytest,Java+TestNG环境引入allure-testng依赖,执行用例时添加生成Allure结果的参数,比如Pytest执行时添加--alluredir=allure-results参数。 - 调整任务步骤顺序:确保步骤顺序为「拉取代码 -> 启动Docker容器执行用例(生成原始结果到挂载目录) -> 停止/销毁容器 -> 执行Allure插件生成报告」,不要调换后两步的顺序。
内容的提问来源于stack exchange,提问作者user3595231
相关产品推荐
相关产品推荐

