网易首页 > 网易号 > 正文 申请入驻

测试实战”:Jenkins+Docker+Playwright自动化测试全链路

0
分享至

自动化测试当然需要自动的运行,Jenkins作为一款经典的持续集成工具仍被广泛应用于企业的自动化测试部署和执行。

作为测试工程师掌握Jenkins的使用,能够有效提升测试效率从而扩大自动化测试的影响力!



本篇文章主打一个实战干货,直接带大家通过一个demo project学习使用Jenkins运行Playwright测试并生成报告的完整链路实现。

最终效果:我们将实现什么?

一键执行,全程自动化

在 Jenkins 点击“构建”,流水线将自动拉取最新代码,在隔离的容器中准备好所有环境,并运行 Playwright 测试。

Allure报告集成

生成Allure测试报告并且可以通过Jenkins直接查看

邮件即时通知

运行测试结束后,自动发送包含构建状态、测试信息和Allure报告链接的邮件。

准备工作

1.Docker

本文将会使用Docker的方式安装Jenkins,并且playwright测试也会在容器中执行

2.Playwright 测试项目

●准备一个可正常运行的 Python Playwright + Pytest 项目。

●如果需要一个示例项目,可以从我的 GitHub 仓库获取:[https://github.com/bridgeshi85/playwright-pytest-allure-framework]

3.邮件发送服务

准备一个 SMTP 邮箱账号(推荐163邮箱)

部署Jenkins服务

1. 准备 Jenkins 镜像

首先创建一个 Dockerfile,代码如下

FROM jenkins/jenkins:lts USER root # -------- Install Docker CLI -------- RUN apt-get update && \ apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release && \ install -m 0755 -d /etc/apt/keyrings && \ curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ chmod a+r /etc/apt/keyrings/docker.gpg && \ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \ apt-get update && \ apt-get install -y docker-ce-cli docker-compose-plugin && \ rm -rf /var/lib/apt/lists/* # -------- Install Jenkins plugins (as root) -------- COPY plugins.txt /usr/share/jenkins/plugins.txt RUN jenkins-plugin-cli --plugin-file /usr/share/jenkins/plugins.txt EXPOSE 8080

重点说明:

●Jenkins需要通过docker命令启动容器,playwright的测试会运行在宿主机的容器中(稍后会提到),所以需要安装docker cli命令行工具

●为了避免Jenkins Pipeline 中执行 Docker 命令时出现 permission denied,使用了root用户。但是需注意,尽量避免在生产环境中这样操作

● 通过jenkins-plugin-cli预先安装了以下plugin,具体文件在示例项目jekins目录下plugins.txt中, 内容如下:

workflow-aggregator:2.7git:5.8.0docker-workflow:1.28credentials-binding:702.vfe613e537e88ssh-agent:295.v9ca_a_1c7cc3a_a_email-ext:2.102allure-jenkins-plugin:2.33.0

准备完成后在Dockerfile和plugins.txt所在目录下执行以下命令来构建镜像:

docker build -t my-jenkins:latest .

2. 启动 Jenkins

首先通过以下命令确认自己的 Docker Socket 使用的路径:

docker context ls

运行后可以看到以下内容:

NAME DESCRIPTION DOCKER ENDPOINT ERRORdefault DOCKER_HOST based configuration unix:///var/run/docker.sockdesktop-linux* Docker Desktop unix:///Users/xxxx/.docker/run/docker.sock

接着使用 docker 运行 Jenkins 容器

docker run -d \ --name my-jenkins \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins_home:/var/jenkins_home \ -v ~/.docker/run/docker.sock:/var/run/docker.sock \ my-jenkins:latest

注意启动 Jenkins 容器时,需要将宿主机上 Docker Desktop 使用的 socket 路径(~/.docker/run/docker.sock)挂载到容器内的 /var/run/docker.sock。

它的作用是什么?默认情况下,容器内部无法直接运行底层的 Docker 命令。

因此,我们将宿主机的 Docker Socket 目录映射到 Jenkins 容器中,使 Jenkins 能够调用宿主机的 Docker 启动测试容器。这种方式通常称为 Docker outside Docker(DoD)模式。

3. 初始化 Jenkins

Jenkins 容器成功运行后,打开浏览器访问 http://localhost:8080,将会看到 Jenkins 的“解锁”页面



初始密码可以从容器日志中获取。因为之前启动的容器名为 my-jenkins,可以执行以下命令查看其启动日志:

docker logs my-jenkins

在日志输出中向下滚动,找到被 ***包围的部分,其中的字符串就是密码。

[LF]> [LF]> *************************************************************[LF]> *************************************************************[LF]> *************************************************************[LF]> [LF]> Jenkins initial setup is required. An admin user has been created and a password generated.[LF]> Please use the following password to proceed to installation:[LF]> [LF]> d26b15f6f46f415ca77ee3f06faa1fbc[LF]> [LF]> This may also be found at: /var/jenkins_home/secrets/initialAdminPassword[LF]> [LF]> *************************************************************[LF]> *************************************************************[LF]> *************************************************************

将初始密码复制并粘贴到浏览器的输入框中,点击“继续”。随后按照引导安装推荐的插件,等待安装完成并设置好你的管理员账号后,就可以正式进入我们的 Jenkins 了!

创建 Pipeline Job 并运行测试

准备测试环境:启动被测应用与构建测试镜像

为了让测试顺利运行,本文准备了一个简单的 demo 前端项目(demo-frontend)作为被测系统。你可以通过仓库获取相关代码:

[https://github.com/bridgeshi85/playwright-pytest-allure-framework]

接下来,我们将搭建测试环境并构建Playwright测试镜像。

构建并运行前端应用

为了让 Jenkins 中的测试容器能够访问到被测应用,我们首先需要创建一个Docker网络

docker network create e2e-test

进入 demo-frontend 目录,构建应用镜像并启动容器。关键点在于使用 --network 参数将容器加入我们刚创建的 e2e-test 网络。

# 构建镜像docker build -t demo-frontend:latest .# 启动容器,并加入网络docker run -d \ --name demo-frontend \ --network e2e-test \ -p 3000:80 \ demo-frontend:latest

构建测试代码运行镜像

在测试代码所在的目录(playwright-automation-test)下,打开终端执行以下命令。请注意,镜像名称 playwright-test-agent:latest 必须与后续 Jenkinsfile 中指定的名称保持一致。

docker build -t playwright-test-agent:latest .

至此,测试所需的基础设施(测试应用和镜像)已准备完成。

第一步:在Jenkins Pipeline中运行测试

1、在 Jenkins 首页左侧点击 New Item(新建任务)。

2、输入任务名称(例如:Playwright-UI-E2E),选择 Pipeline(流水线),点击 OK。



3、下拉至 Pipeline 区域,选择 Pipeline script 并将以下代码贴入

pipeline { agent any stages { stage('Checkout') { agent any steps { git branch: 'main', url: 'https://github.com/bridgeshi85/playwright-pytest-allure-framework' } } stage('Run UI Tests (Playwright Agent)') { agent { docker { image 'playwright-test-agent:latest' args '--network e2e-test' pipeline { agent any stages { stage('Checkout') { agent any steps { git branch: 'main', url: 'https://github.com/bridgeshi85/playwright-pytest-allure-framework' } } stage('Run UI Tests (Playwright Agent)') { agent { docker { image 'playwright-test-agent:latest' args '--network e2e-test' reuseNode true } } steps { sh ''' set -euxo pipefail echo "Running tests..." cd playwright-automation-test pytest tests/test_login.py --env=jenkins -s ''' } } } }

该 Pipeline 中定义了两个主要阶段:代码拉取和在执行测试。

阶段一:代码拉取(stage('Checkout'))

从 GitHub 仓库拉取代码,指定分支为 main

阶段二:运行 UI 测试(stage('Run UI Tests (Playwright Agent)'))

① 使用 docker agent,指定镜像 playwright-test-agent:latest,并通过加入网络 e2e-test,这样我们的测试容器就能找到 demo-frontend 应用

② 在容器内执行以下命令 Shell 命令。

●set -euxo pipefail:设置 Bash 选项,确保脚本严格执行、打印命令并在错误时退出。

●echo "Running tests...":输出日志。

●cd playwright-automation-test:切换到测试目录。

●pytest tests/test_login.py --env=jenkins -s:通过 pytest 执行测试

备注:本示例仓库已设为公开访问,因此可以直接拉取。如果是私有仓库,请使用自己的 GitHub Token。

4、运行测试

准备就绪后,点击左侧菜单栏中的 立即构建(Build Now) 运行测试,运行完成后可以在任务日志中看到如下内容



第二步:展示 Allure 报告

测试通过后会在工作区生成 Allure 报告文件,我们可以通过 Jenkins 的 Allure 插件直接在 Jenkins 中展示报告。

配置步骤

1、进入全局工具配置:在 Jenkins 页面右上角点击 系统配置,然后找到并点击 Tools(全局工具配置)

2、添加 Allure Commandline:

●在配置页面中向下滚动,找到 Allure Commandline 区域,点击 Add Allure Commandline

●输入别名,并勾选自动安装

●在下拉菜单中选择一个较新的版本,并选择默认从 Maven Central 下载即可。

3、在 Job 中配置 Allure

回到之前创建的 Pipeline Job,修改 Pipeline 脚本,在 stages 部分之后添加以下代码:

post { always { allure( includeProperties: false, jdk: '', resultPolicy: 'LEAVE_AS_IS', results: [[path: 'playwright-automation-test/reports/allure-results']] ) }}

再次 Build 之后,我们可以在构建页面中看到 Allure Report 的链接



第三步:发送邮件报告

最后一步是将测试结果和报告链接及时推送给团队邮箱,便于测试成果的共享与同步。Jenkins 提供了邮件插件 emailext(Extended E-mail Notification)来帮助我们实现。

Jenkins Email 插件配置步骤

首先,需要准备一个已开通 SMTP 的邮箱,这里以 163 邮箱为例(SMTP 设置方法不再赘述)。邮箱准备好后,回到 Jenkins 进行插件配置:

1、添加邮箱 Credentials:

●进入 Manage Jenkins(系统管理)→ Security → Credentials

●点击 + Add Credentials,选择 Username with password

●Username 填写邮箱地址,Password 填写 SMTP 授权码(不是邮箱登录密码)

2、配置插件:

●进入 Manage Jenkins(系统管理)→ System

●向下滚动找到 Extended E-mail Notification(注意:页面中还有一个普通的“E-mail Notification”,实测两者任选其一即可,也可都填写)

3、填写参数:

●SMTP server:输入 smtp.163.com

●SMTP port:输入 465

●Use SSL:勾选

●Credentials:选择之前创建的 163 邮箱凭证

●Default user e-mail suffix:输入 @163.com



4、配置 Jenkins 默认发送的邮箱地址:

●进入 Manage Jenkins(系统管理)→ System

●System Admin e-mail address 中填写与第一步相同的 Username(由于 163 安全设置,SMTP 发送时的邮箱地址必须一致)

Pipeline 中添加邮件通知步骤

配置完成后,我们回到之前创建的 Pipeline,在 allure step 后添加以下步骤:

emailext( subject: "[${env.JOB_NAME}] Build #${env.BUILD_NUMBER} - ${currentBuild.currentResult}", to: "${params.EMAIL_RECIPIENTS}", mimeType: 'text/html', body: """ """)

Build Status: ${currentBuild.currentResult}

Job: ${env.JOB_NAME}

Build Number: ${env.BUILD_NUMBER}

Build URL: ${env.BUILD_URL}

Allure Report: View Report

Build 完成后,Jenkins 就会自动将这封包含了测试结果的邮件,发送到我们在触发时填写的收件人邮箱里:



☑️想要提升自己的薪资,想要在行业走得更长久更好,不妨提升自己的技能,

☑️如果你当前的工作已经达到天花板,选择换个行业,也许会事半功倍。

☑️如果你渴望高薪岗位或者想要转行,可以戳⬇️⬇️⬇️

公主号【Atstudy技术社区】,内含项目实战等各种资料包

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中英法三文发道歉信!姆巴佩就不当言论道歉:对中国怀有深深敬意

中英法三文发道歉信!姆巴佩就不当言论道歉:对中国怀有深深敬意

全景体育V
2026-10-27 20:15:51
内塔连任、只欠川普轰炸伊朗;而巴西则可能就此开始分裂、独立

内塔连任、只欠川普轰炸伊朗;而巴西则可能就此开始分裂、独立

邵旭峰域
2026-10-28 11:01:28
关于台湾问题,日本外相重磅表态,高市早苗要来参加APEC了?

关于台湾问题,日本外相重磅表态,高市早苗要来参加APEC了?

DS北风
2026-10-27 19:38:13
一个坏消息: 中国1000多万应届毕业生面临的非常严峻问题, 或到来了

一个坏消息: 中国1000多万应届毕业生面临的非常严峻问题, 或到来了

史之铭
2026-10-28 04:32:50
马刺大胜送国王开局4连败:文班29+10+5帽 尚帕尼半场轰8三分

马刺大胜送国王开局4连败:文班29+10+5帽 尚帕尼半场轰8三分

醉卧浮生
2026-10-28 10:26:54
姆巴佩被全面封杀,但没人告诉你他到底说了什么,我也支持不告诉

姆巴佩被全面封杀,但没人告诉你他到底说了什么,我也支持不告诉

歪歌社团
2026-10-27 23:48:11
德国专家:美国现在之所以处处避开中国,那就是可能美国已经意识到了,现在的中国早就不是美国能够随意掌控的了

德国专家:美国现在之所以处处避开中国,那就是可能美国已经意识到了,现在的中国早就不是美国能够随意掌控的了

扶苏聊历史
2026-10-27 18:06:49
卢拉惊天逆转,特朗普气急败坏

卢拉惊天逆转,特朗普气急败坏

南风窗
2026-10-28 12:45:11
比销量下滑还可怕的是:连生活在县城的居民,都开始抛弃了油车?

比销量下滑还可怕的是:连生活在县城的居民,都开始抛弃了油车?

兴趣知识
2026-10-28 05:05:50
西甲想当和事佬,皇马还在无所谓,傲慢的皇马还要装多久鸵鸟

西甲想当和事佬,皇马还在无所谓,傲慢的皇马还要装多久鸵鸟

澎湃新闻
2026-10-28 12:59:18
姆巴佩到底说了啥?一个“玩笑”引发的连锁反应,或遭商业反噬

姆巴佩到底说了啥?一个“玩笑”引发的连锁反应,或遭商业反噬

汪星人哟
2026-10-27 08:32:57
姆巴佩不用退代言费,还能起诉中国品牌要尾款

姆巴佩不用退代言费,还能起诉中国品牌要尾款

小小河
2026-10-28 02:16:26
连续数月多次触摸女同事大腿,甚至将手伸入其上衣抚摸隐私部位,42岁摄影师被澳门警方拘捕

连续数月多次触摸女同事大腿,甚至将手伸入其上衣抚摸隐私部位,42岁摄影师被澳门警方拘捕

南方都市报
2026-10-28 08:28:04
演员再像也演不出真实的苦!伟人夫妇两张照片对比,看哭无数人

演员再像也演不出真实的苦!伟人夫妇两张照片对比,看哭无数人

喜欢历史的阿繁
2026-10-28 06:16:54
关门!常州一大酒店突然歇业

关门!常州一大酒店突然歇业

常州大喇叭
2026-10-28 14:35:52
樱花演唱会再露"下乳"引争议,粉丝怒问造型团队

樱花演唱会再露"下乳"引争议,粉丝怒问造型团队

浅遇时光
2026-10-26 04:35:36
张水华火到国外!外媒:辞职10个月赚500万 很多人一辈子赚不到

张水华火到国外!外媒:辞职10个月赚500万 很多人一辈子赚不到

念洲
2026-10-27 09:21:31
自媒体人“徽剑”遭买凶杀害,讽刺的是他们却还在说这是电诈

自媒体人“徽剑”遭买凶杀害,讽刺的是他们却还在说这是电诈

清书先生
2026-10-28 09:00:15
6700亿!张一鸣刷新中国首富身价纪录,他是如何把自己“养”成首富的?

6700亿!张一鸣刷新中国首富身价纪录,他是如何把自己“养”成首富的?

News脑洞
2026-10-27 19:53:34
6.1秒手握球权领先都输?美媒直言布朗严重失误 绝平三分化为泡影

6.1秒手握球权领先都输?美媒直言布朗严重失误 绝平三分化为泡影

颜小白的篮球梦
2026-10-28 10:54:56
2026-10-28 15:20:49
51Testing软件测试网 incentive-icons
51Testing软件测试网
中国软件测试人的精神家园
1668文章数 13285关注度
往期回顾 全部

科技要闻

AI世界开口说话!谷歌新模型Genie 4有多神

头条要闻

媒体:皇马坚持认为球员有权做个人表达 还取笑西甲

头条要闻

媒体:皇马坚持认为球员有权做个人表达 还取笑西甲

体育要闻

0胜4负与篮网国王一桌 热火字母哥赌错了?

娱乐要闻

王心凌近况!分手已9年,如今还是单身

财经要闻

解密 “速成车”:一辆车怎样更快造出来?

汽车要闻

宾利MULLINER再展定制实力 推哥白尼主题限量版车型

态度原创

艺术
时尚
亲子
健康
军事航空

艺术要闻

奥雷·舍人新作:韩国大邱数字艺术馆

「初代恶女」的选择:比起做母亲,我更想先做自己

亲子要闻

娃同学妈妈不到40岁离世,后续太唏嘘了……

查不出猝死风险?可能是项目没做对

军事要闻

伊朗最高领袖最新声明 提到了“结束战争”

无障碍浏览 进入关怀版