news 2026/4/23 15:42:31

手把手教你Jenkins+Pytest+Allure 集成测试环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你Jenkins+Pytest+Allure 集成测试环境
内容简介

本文会介绍如何从 0 到 1 构建 Python 项目的集成测试环境,文中会详细提及部署过程中会遇到的各种问题。

  • Pytest 负责 Python 代码测试
  • Allure 负责测试报告 HTML 界面展示
  • Jenkins 负责自动化

部署环境为 MacOS,在 Windows 或 Linux 下可以通过类似的方式部署与操作,此外也会给出对应的参考链接。

正文

首先需要安装 Jenkins,Jenkins 依赖于 JDK,所以需要先安装 Java JDK,这块不赘述,随后安装 Jenkins,在 MacOS 中可以通过 HomeBrew 安装。

brew install jenkins

如果你 brew install 很慢,可以参考本文最后的技巧 [1]。

当然,你可以直接通过 Docker 进行安装,jenkins 在 Docker Hub 中提供了官方的源码

docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins

我使用 brew 安装,安装完后,使用如下命令运行 jenkins

$ jenkins

此时 jenkins 将会显式的运行在命令行终端,并且创建~/.jenkins目录作为 JENKINS_HOME,localhost:8080 作为默认 URL。

启动时,Jenkins 会给出初始的密码,该密码会在 JENKINS_HOME 的 secrets/initialAdminPassword 中。

登录后,Jenkins 会要求你安装一些插件,此时出现第一个坑,安装插件速度极慢,可以参考技巧 [2] 来解决这个问题,通过技巧 [2] 修改配置后,可以通过技巧 [3] 来重启 Jenkins

Jenkins 安装有几个关键点。

allure 是一种支持多种编程语言的可视化测试报告工具,allure 在 jenkins 中的插件让 Jenkins 可以轻松调用 allure(有坑),而 allure 在 pytest 的插件主要是为了让 pytest 可以生成满足 allure 要求的测试信息文件。

通过 allure 插件,将 jenkins、pytest、allure 链接在一起,pytest 负责测试,测试生成的报告可以通过 allure 生成图像化界面,而 jenkins 自动化两个过程。

在 MacOS 中,allure 同样通过通过 Homebrew 安装。

brew install allure

allure 在 Windows 与 Linux 的安装方式参考:https://github.com/allure-framework/allure2

allure 安装完后,先来安装 allure 关于 pytest 的插件,顺带将 pytest 也安装了。

pip install pytest==5.3.5 pip install allure-pytest==2.8.9 pip install allure-python-commons==2.8.9

安装完后,可以先来使用一下。

找一个使用 Pytest 的项目,直接去 github 拉取 requests 库,它的 tests 目录写满了通过 pytest 构建的测试用例。

通过 pytest 运行 requests/tests 中的代码并通过 --alluredir 指定生成数据的文件夹,这些数据就是 allure 可读取的数据,通常为一堆 JSON 文件。

pytest requests/tests --alluredir=./allure-results

获得 JSON 文件数据后,可以通过 allure generate 命令来生成 HTML 测试报告界面。

allure generate allure-results -o allure-report --clean

通过上述命令,allure 会将测试报告生成到 allure-report 目录中,至此整个流程走通了一半。

接着来安装 Allure 在 Jenkins 中的插件。

进入 Jenkins 的插件管理界面,安装「Allure Jenkins Plugin」,此外为了更好的显示 HTML 测试报告,继续安装「HTML Publisher Plugin」。

「Allure Jenkins Plugin」安装完后,还需要进行配置,进入「系统设置」->「Global Tool Configuration」。

进行如下配置,From Maven Central 选择了当前最新版 2.13.1。

配置完后,将 Jenkins 重启,让 Jenkins 加载最新安装的插件。

Jenkins 插件安装完后,在 Jenkins 中创建 Freestyle project,Description 描述可以随便填写,在 Build 构建处,选择 Execute Shell,如果你是 windows,则选择 Execute Windows batch command。

因为我在 MacOS 下执行,所以选择 Execute Shell,输入如下 Shell 代码

#!/bin/bash cd /Users/ayuliao/Desktop/workspace/CICD source venv/bin/activate pytest requests/tests --alluredir "${WORKSPACE}/target/allure-results" exit 0

cd 进入相应的目录,然后通过 source 激活相应的 Python 虚拟环境,我只在该虚拟环境中安装了 pytest 库,随后正常使用 pytest 则可,此时依旧使用 pytest 来跑 requests/tests 中的测试代码,但 --alluredir 设置的路径非常有讲究

简单而言, --alluredir 必须为"${WORKSPACE}/target/allure-results",因为 Jenkins 通过插件调用 allure genera 命令时,传入的路径固定为${WORKSPACE}/target/allure-results

${WORKSPACE}是 Jenkins 内置的变量,表示「分配给构建作为工作空间的目录的绝对路径。」。

如果 --alluredir 为其他值,通过 Jenkins 构建项目时,会抛出allure-results does not exists,你可以在「https://github.com/jenkinsci/allure-plugin/issues/201」看见问题的具体细节。

此外,还需要配置 Post-build Actions 构建后的动作,这里也非常关键。

选择「Allure Report」,将 Results 与 Report Path 分别配置成target/allure-resultstarget/allure-report,这是固定的,不要看其注释说你可以随意配置。

上述配置之所以是固定的,需要看 Jenkins Job 中的 console output,jenkins 调用 allure generate 命令是固定的。

$ /Users/ayuliao/.jenkins/tools/ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation/allure/bin/allure generate "/Users/ayuliao/.jenkins/workspace/allures report/target/allure-results" -c -o "/Users/ayuliao/.jenkins/workspace/allures report/target/allure-report"

如果将 Results 与 Report Path 配置成其他值,会出现各种问题。

至此大功告成。

技巧

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:56:53

数字图像处理篇---均值滤波

我们用最直白的方式介绍「均值滤波」。你可以把它想象成图片的 “平均主义大锅饭” 。 一、一句话概括 均值滤波就是:把图片上每个像素点,都换成它自己和周围邻居们颜色的“平均值”。 二、核心比喻:班级平均分 想象一张图片是一个由很多小…

作者头像 李华
网站建设 2026/4/23 12:57:35

YAPI自动生成接口文档,解放测试人生产力...

Hi,大家好。如果接口文档信息不全或是没有接口文档的情况下,领导要求我们做接口自动化测试,这无异是一个非常艰辛的任务。但是编写接口文档的工作量很大,怎么办呢?有什么自动化工具可以协助我们生成文档呢?…

作者头像 李华
网站建设 2026/4/23 14:34:22

软测面试丨关于JMeter的面试问题,看这篇就够了!

JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。下面松勤程老师列举分享一些关于JMeter问的最多的面试题。 1、…

作者头像 李华
网站建设 2026/4/21 9:52:35

基于灰狼算法优化孪生OS-ELM的多输入回归预测附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书…

作者头像 李华