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

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

相关推荐
热点推荐
真的来了!特斯拉正式发布全新 Model Y

真的来了!特斯拉正式发布全新 Model Y

XCiOS俱乐部
2026-09-11 09:28:37
终于有人替超2亿灵活就业者说话了!人大代表提出:缴费年限守住15年、女性50岁男性60岁退休、生活困难可退个人缴费、到龄不够允许补缴

终于有人替超2亿灵活就业者说话了!人大代表提出:缴费年限守住15年、女性50岁男性60岁退休、生活困难可退个人缴费、到龄不够允许补缴

扶苏聊历史
2026-09-09 18:28:50
何超琼自曝家族秘闻,怪不得64岁仍未再婚生子,更狠的还在后面

何超琼自曝家族秘闻,怪不得64岁仍未再婚生子,更狠的还在后面

皮皮电影
2026-09-11 23:15:04
江阴国资再出手,9.82亿元收下002998!

江阴国资再出手,9.82亿元收下002998!

晨哨网
2026-09-11 14:48:28
“一”字涨停!002161,要追“光”

“一”字涨停!002161,要追“光”

金融界
2026-09-11 12:12:11
太揪心了!离出口仅160米,2名工人被泥石流封在隧道9天,靠喝泥坑水活了下来

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

可达鸭面面观
2026-09-10 11:44:35
美军已介入,陆战队抵近,美通知台当局准备,解放军军机进台海了

美军已介入,陆战队抵近,美通知台当局准备,解放军军机进台海了

果妈聊娱乐
2026-09-10 12:58:26
手机和宽带还绑在一起的家庭,建议认真看一下

手机和宽带还绑在一起的家庭,建议认真看一下

李博世财经
2026-09-09 10:14:24
中方不仅去了,还要一对一,外交部罕见破规矩,堵上了一些人的嘴

中方不仅去了,还要一对一,外交部罕见破规矩,堵上了一些人的嘴

爱意随风起呀
2026-09-11 18:30:23
一个奇怪的社会现象,凡是有退休金的老人,都不愿意和儿女住一起

一个奇怪的社会现象,凡是有退休金的老人,都不愿意和儿女住一起

大熊欢乐坊
2026-09-10 04:47:51
24+13+8!CBA外援统治亚运会,男篮再遇强敌,王俊杰或成最后希望

24+13+8!CBA外援统治亚运会,男篮再遇强敌,王俊杰或成最后希望

大卫的篮球故事
2026-09-11 18:10:26
浙江男子为与美女“免费约”被骗3.8万元,事后骗子发信息“安慰”:网络是残酷无情的,你无法看透,钱没了可以再赚,对不起

浙江男子为与美女“免费约”被骗3.8万元,事后骗子发信息“安慰”:网络是残酷无情的,你无法看透,钱没了可以再赚,对不起

扬子晚报
2026-09-11 20:36:49
知名港星癌细胞扩散至脑部,闻到身上有尸臭味,剩四分之一条人命

知名港星癌细胞扩散至脑部,闻到身上有尸臭味,剩四分之一条人命

叨唠
2026-03-15 17:36:49
形体模特李琪火了!人高马大,网友:一般男人难驾驭

形体模特李琪火了!人高马大,网友:一般男人难驾驭

烟浔渺渺
2026-09-10 06:02:34
利润暴跌37%、现金流负400亿!华为不是出事,是在下一盘大棋

利润暴跌37%、现金流负400亿!华为不是出事,是在下一盘大棋

流苏晚晴
2026-09-11 13:47:58
许家印大概怎么也没料到,自己刚被判刑才四天,王健林就凭一系列举措让口碑迅速逆势翻红

许家印大概怎么也没料到,自己刚被判刑才四天,王健林就凭一系列举措让口碑迅速逆势翻红

人生录
2026-08-30 00:05:13
网传比亚迪取消利润奖,大量员工在高管微博评论区表达不满

网传比亚迪取消利润奖,大量员工在高管微博评论区表达不满

识礁Farsight
2026-09-11 16:51:50
伊朗击沉美军舰艇!美国五角大楼:海军基地严重损坏

伊朗击沉美军舰艇!美国五角大楼:海军基地严重损坏

大国之翼
2026-09-11 06:29:47
今年的月饼大概率卖不动了。

今年的月饼大概率卖不动了。

老陆不老
2026-09-09 21:58:27
49999元,iPhone Duo代购订单成交!溢价34000元,谁在买?

49999元,iPhone Duo代购订单成交!溢价34000元,谁在买?

上观新闻
2026-09-11 21:07:49
2026-09-12 00:16:49
51Testing软件测试网 incentive-icons
51Testing软件测试网
中国软件测试人的精神家园
1641文章数 13285关注度
往期回顾 全部

科技要闻

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

头条要闻

中方赴印代表团规模有多大 外交部回应

头条要闻

中方赴印代表团规模有多大 外交部回应

体育要闻

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

娱乐要闻

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

财经要闻

女装“玖姿”母公司跨境贸易迷局:安正时尚说谎了吗?

汽车要闻

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

态度原创

健康
数码
艺术
亲子
旅游

手脚发麻口齿不清?也可能是中风!

数码要闻

机械革命无界14S 2026笔记本锐龙版上架,国补价3994.15元

艺术要闻

费欣画自家闺女,拍了330多万!

亲子要闻

警惕!这些动画片别再给孩子看了!

旅游要闻

奥地利美景宫60件馆藏真迹首次来华 10月1日起登陆成都

无障碍浏览 进入关怀版