用Docker运行自动化测试并生成Allure报告的核心是将环境、脚本、依赖和工具打包进容器,实现“一次构建,随处执行,结果可视”;推荐轻量型官方镜像或自定义Dockerfile,需注意Chromium与驱动版本对齐,脚本须适配headless和远程WebDriver,通过-v挂载报告目录,宿主机用allure serve查看交互式报告。

用Docker运行自动化测试脚本并生成报告,核心是把测试环境、脚本、依赖和报告工具打包进容器,做到“一次构建,随处执行,结果可视”。不需要在每台机器上装Chrome、Playwright、Allure或配置Python路径,所有东西都在镜像里。
准备带测试框架和浏览器的基础镜像
推荐两种方式,按项目复杂度选:
- 轻量快速:用官方镜像如
selenium/standalone-chrome或mcr.microsoft.com/playwright/python,已预装浏览器、驱动和基础库,适合Selenium/Playwright UI测试 - 完全可控:自定义
Dockerfile,基于python:3.11-slim,显式安装pytest、selenium(或playwright)、allure-pytest,再加系统级依赖(如chromium、chromium-driver、libnss3等) - 注意版本对齐:Chromium 和 ChromeDriver 必须严格匹配;Playwright 需用
playwright install-deps chromium安装系统依赖,否则 headless 启动失败
编写适配容器的测试脚本
脚本要能脱离本地图形界面和直连模式运行:
- 禁用 GUI,启用 headless 模式:
options.add_argument('--headless=new')(Chrome 116+)、--no-sandbox、--disable-dev-shm-usage - WebDriver 不走本地实例,改用远程连接:
webdriver.Remote('http://selenium-hub:4444/wd/hub', options=options)(Docker Compose 场景)或http://localhost:4444/wd/hub(单容器调试) - 测试用例加上
@allure.feature、@pytest.mark.parametrize等标签,方便 Allure 报告分类统计 - 用显式等待替代 time.sleep(),避免容器中因资源波动导致超时失败
通过命令或 Docker Compose 运行并挂载报告目录
关键是要让容器内生成的报告能落到宿主机,方便查看:
- 单容器运行(例如 Playwright + Allure):
docker run -v $(pwd)/allure-results:/app/allure-results -v $(pwd)/tests:/app/tests my-test-env pytest --alluredir=/app/allure-results tests/ - 多服务编排(推荐 Selenium Grid 场景):用
docker-compose.yml定义selenium-hub和test-runner两个服务,设置同一网络、depends_on,并在test-runner中挂载脚本目录和映射allure-results路径 - 启动时加
--shm-size=2g参数,防止 Chrome 因共享内存不足崩溃
本地查看 Allure 测试报告
报告生成后,不用进容器就能打开:
- 确保宿主机已安装 Allure CLI:
npm install -g allure-commandline --save-dev - 在挂载报告的本地目录执行:
allure serve ./allure-results - 浏览器自动打开
http://localhost:5050,展示交互式报告:用例趋势、失败截图、步骤日志、环境信息一目了然 - 如需长期存档,可导出静态站点:
allure generate ./allure-results -o ./allure-report --clean


















