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

测试实战”: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年出生人口预测:老百姓对断绝香火危机的冷漠,官方看到都无奈

2026年出生人口预测:老百姓对断绝香火危机的冷漠,官方看到都无奈

非虚构人间
2026-09-11 01:40:57
真相来了!刘翔没签每年1300万终身合同 权威媒体:全世界仅4人

真相来了!刘翔没签每年1300万终身合同 权威媒体:全世界仅4人

念洲
2026-09-11 14:53:18
WTT澳门冠军赛:大获全胜!松岛辉空3:1直板名将,晋级男单8强

WTT澳门冠军赛:大获全胜!松岛辉空3:1直板名将,晋级男单8强

国乒二三事
2026-09-11 15:56:27
真正让我们看到中美差距的竟然是iPhone Duo

真正让我们看到中美差距的竟然是iPhone Duo

军武数据库
2026-09-10 19:58:04
户晨风骂了三年华为折叠屏是智商税,苹果也出了折叠屏,他连还嘴的机会都没了

户晨风骂了三年华为折叠屏是智商税,苹果也出了折叠屏,他连还嘴的机会都没了

不掉线电波
2026-09-10 13:04:14
女子频繁约情夫酒店开房,2024年情夫嫌身体吃不消,带3瓶药赴约将她杀死

女子频繁约情夫酒店开房,2024年情夫嫌身体吃不消,带3瓶药赴约将她杀死

汉史趣闻
2026-09-11 14:56:30
Anthropic再次针对中国大模型,曝光7家公司蒸馏手法

Anthropic再次针对中国大模型,曝光7家公司蒸馏手法

张可象
2026-09-11 15:01:26
WTT澳门冠军赛:太遗憾!女单世界亚军被淘汰,2:3日本,无缘8强

WTT澳门冠军赛:太遗憾!女单世界亚军被淘汰,2:3日本,无缘8强

国乒二三事
2026-09-11 13:35:57
美媒:万斯为特朗普“每个选民发5000美元”许诺辩护,被猛烈抨击

美媒:万斯为特朗普“每个选民发5000美元”许诺辩护,被猛烈抨击

环球网资讯
2026-09-11 12:00:31
一代鬼王,香港演员雷宇扬离世,终年62岁

一代鬼王,香港演员雷宇扬离世,终年62岁

电影票房预告片
2026-09-11 15:48:22
太揪心了!离出口仅160米,2名工人被泥石流封在隧道9天,靠喝泥坑水活了下来

太揪心了!离出口仅160米,2名工人被泥石流封在隧道9天,靠喝泥坑水活了下来

可达鸭面面观
2026-09-10 11:44:35
香港“鬼王”雷宇扬因胃癌病逝,终年62岁,晚年广州低调养病

香港“鬼王”雷宇扬因胃癌病逝,终年62岁,晚年广州低调养病

韩小娱
2026-09-11 16:14:42
耐克、刘翔均从未向市场公开承认过存在每年200万美元合同类似合作;耐克对外公布过的终身合作运动员不包括刘翔

耐克、刘翔均从未向市场公开承认过存在每年200万美元合同类似合作;耐克对外公布过的终身合作运动员不包括刘翔

鲁中晨报
2026-09-11 12:11:05
涉嫌严重违纪违法,张春林被查

涉嫌严重违纪违法,张春林被查

中国基金报
2026-09-11 17:07:12
25死5伤!青岛货轮火灾搜救结束,本次事故至少有4个重要信息披露

25死5伤!青岛货轮火灾搜救结束,本次事故至少有4个重要信息披露

火山詩话
2026-09-10 20:24:19
低保女孩赴港追星:花自己挣的钱,动了全家的 "救命钱"

低保女孩赴港追星:花自己挣的钱,动了全家的 "救命钱"

网易新闻出品
2026-09-10 15:40:57
真离谱啊!华为三折叠被骂上天,苹果一出折叠屏,中文互联网竟然对折叠屏的评价逆转了!

真离谱啊!华为三折叠被骂上天,苹果一出折叠屏,中文互联网竟然对折叠屏的评价逆转了!

谭谈社会
2026-09-11 11:09:56
史上最强违停刷屏,交警发呆三分钟,网友:这罚单真没法贴

史上最强违停刷屏,交警发呆三分钟,网友:这罚单真没法贴

品读时刻
2026-09-11 09:04:43
这场臭气熏天的裸奔,辟谣后续来了!

这场臭气熏天的裸奔,辟谣后续来了!

胖胖说他不胖
2026-09-11 10:25:19
生涯首进美网决赛!莱巴金娜2-1逆转高芙,将战萨巴伦卡争冠

生涯首进美网决赛!莱巴金娜2-1逆转高芙,将战萨巴伦卡争冠

全景体育V
2026-09-11 11:12:32
2026-09-11 17:39:00
51Testing软件测试网 incentive-icons
51Testing软件测试网
中国软件测试人的精神家园
1641文章数 13285关注度
往期回顾 全部

科技要闻

苹果折叠屏比小米华为贵5000元,该怎么选

头条要闻

3名俄男子被乌女特工"招募" 女方发送自己的火辣照片

头条要闻

3名俄男子被乌女特工"招募" 女方发送自己的火辣照片

体育要闻

37岁还能场场进球,还能翻跟头!

娱乐要闻

黄晓明直言帮太多白眼狼,杨颖遭殃

财经要闻

千叶珠宝创始人夫妇失联 股价应声"腰斩"

汽车要闻

买菜车也有小乐趣 风云T7不止是台合格家用SUV

态度原创

教育
艺术
旅游
房产
亲子

教育要闻

《优妈育儿堂》预告:趣味游戏、奇妙科学、创意手工,陪伴孩子快乐成长

艺术要闻

梅尔尼科夫:全山石、苏高礼、林岗等的老师

旅游要闻

文化中国行·长江文化探访丨龙兴古镇焕新引多元业态 将打造古装短视频拍摄基地

房产要闻

时隔7年,绿地海南再拿地!

亲子要闻

经济拮据,全职宝妈鼓起勇气出来找工作!找到满意岗位却陷入两难:伸手找老公拿家用,还是出门挣工资?

无障碍浏览 进入关怀版