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

测试实战”: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.

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

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

喜欢历史的阿繁
2026-10-28 06:16:54
中期选举前夕民调出炉:特朗普支持率脱离低点,民主党大概率赢下众议院

中期选举前夕民调出炉:特朗普支持率脱离低点,民主党大概率赢下众议院

财联社
2026-10-27 11:54:19
日方收到通知,下个月没时间接待,中方要把时间留给更重要的事

日方收到通知,下个月没时间接待,中方要把时间留给更重要的事

共工之锚
2026-10-28 00:51:46
曝光缅北电诈被悬赏杀害,反诈博主“徽剑”家属:俩彪形大汉堵到家,我们才签的谅解书

曝光缅北电诈被悬赏杀害,反诈博主“徽剑”家属:俩彪形大汉堵到家,我们才签的谅解书

时代周报
2026-10-27 19:07:09
公路车骑行服,熟女骑行穿搭,利落面料勾勒饱满曲线

公路车骑行服,熟女骑行穿搭,利落面料勾勒饱满曲线

只要高兴就好
2026-09-24 11:58:50
皇马得意宣布:中国赞助商并未终止合作!网友怒冲品牌社媒:吃里扒外

皇马得意宣布:中国赞助商并未终止合作!网友怒冲品牌社媒:吃里扒外

念洲
2026-10-28 08:42:17
妻子坚决反对舒马赫安乐死,再卖8块名表筹款救夫,总价值约400万美元

妻子坚决反对舒马赫安乐死,再卖8块名表筹款救夫,总价值约400万美元

历史龙元阁
2026-10-28 07:25:13
不得不说蔚来老板娘确实漂亮,我一个女都要看多两眼

不得不说蔚来老板娘确实漂亮,我一个女都要看多两眼

东方不败然多多
2026-10-27 15:18:53
一名入伍才三个月的俄军逃兵,在乌东村落枪杀了五名熟睡的乌军无人机操作员,得手后端着枪一头扎进了乌克兰控制的哈尔科夫百万人口大城市

一名入伍才三个月的俄军逃兵,在乌东村落枪杀了五名熟睡的乌军无人机操作员,得手后端着枪一头扎进了乌克兰控制的哈尔科夫百万人口大城市

扶苏聊历史
2026-10-24 16:46:53
姆巴佩道歉后,多方最新发声!

姆巴佩道歉后,多方最新发声!

大风新闻
2026-10-28 09:04:09
传闻,姆巴佩侮辱"教员"!央视已叫停涉及姆巴佩的西甲赛事播出,其相关广告也全部下架!截止发稿,姆巴佩和皇马仍未道歉回应

传闻,姆巴佩侮辱"教员"!央视已叫停涉及姆巴佩的西甲赛事播出,其相关广告也全部下架!截止发稿,姆巴佩和皇马仍未道歉回应

开成运动会
2026-10-27 15:38:29
弗拉维奥·博索纳罗被曝前往美国“流亡”

弗拉维奥·博索纳罗被曝前往美国“流亡”

新华社
2026-10-28 06:20:08
知名律师:杀害“徽剑”主犯死缓量刑明显偏轻,慎用不等于一味从宽

知名律师:杀害“徽剑”主犯死缓量刑明显偏轻,慎用不等于一味从宽

不掉线电波
2026-10-28 09:28:40
杀害反诈博主吴恺的凶手赵冰正面照曝光!签署“刑事谅解书”的吴恺“亲人”拿了50万,和他没有血缘关系

杀害反诈博主吴恺的凶手赵冰正面照曝光!签署“刑事谅解书”的吴恺“亲人”拿了50万,和他没有血缘关系

火山詩话
2026-10-28 05:21:29
德国专家:美国现在之所以处处避开中国,那就是可能美国已经意识到了,现在的中国早就不是美国能够随意掌控的了

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

扶苏聊历史
2026-10-27 18:06:49
光明日报:不容侮辱中国已故伟大领袖!吃中国饭,砸中国锅?姆巴佩,不配!

光明日报:不容侮辱中国已故伟大领袖!吃中国饭,砸中国锅?姆巴佩,不配!

大风新闻
2026-10-27 16:00:03
"丧尽天良!"西安挖出秦始皇女儿的陵墓,墓里的惨状,连考古专家都倒吸一口凉气

"丧尽天良!"西安挖出秦始皇女儿的陵墓,墓里的惨状,连考古专家都倒吸一口凉气

扶苏聊历史
2026-10-27 16:08:24
法国访谈节目《The Bridge》就姆巴佩事件道歉:视频系今年4月录制的节目花絮;我们对该视频给中国及世界各地的人们造成的冒犯深表遗憾

法国访谈节目《The Bridge》就姆巴佩事件道歉:视频系今年4月录制的节目花絮;我们对该视频给中国及世界各地的人们造成的冒犯深表遗憾

都市快报橙柿互动
2026-10-28 06:55:44
身家一年暴涨2000亿元!张一鸣赚的钱,和钟睒睒、马云、王健林的都不一样

身家一年暴涨2000亿元!张一鸣赚的钱,和钟睒睒、马云、王健林的都不一样

都市快报橙柿互动
2026-10-28 02:14:23
已经没有正部级央企了

已经没有正部级央企了

抽屉读书
2026-10-27 12:03:18
2026-10-28 10:12:49
51Testing软件测试网 incentive-icons
51Testing软件测试网
中国软件测试人的精神家园
1668文章数 13285关注度
往期回顾 全部

科技要闻

M6芯片版14英寸MacBook Pro:15999元起

头条要闻

牛弹琴:博索纳罗败选携妻女"流亡"美国 卢拉气得大骂

头条要闻

牛弹琴:博索纳罗败选携妻女"流亡"美国 卢拉气得大骂

体育要闻

悲惨!杰威重伤倒下 最好的雷霆已成过去?

娱乐要闻

芒果遇到厉娜和许飞笑发财了!

财经要闻

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

汽车要闻

纯电续航1003km 大五座SUV腾势N8正式开启预订

态度原创

本地
健康
家居
艺术
亲子

本地新闻

十月奔赴迪庆,解锁梅里日照金山

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

家居要闻

2026建博会(广州) 公装联探展交流活动

艺术要闻

寒江不只有孤隐,风雪里有一秤人间 —— 读朱邦《丰溪渔隐图》

亲子要闻

假装晕倒看看儿子们什么反应,结果....

无障碍浏览 进入关怀版