使用GitLink个人建站服务部署Allure在线测试报告
更多技术文章,访问软件测试社区
文章目录
- 🚀前言
- 🔑开通GitLink个人建站服务
- 1. 前提条件
- 2. 登录GitLink平台(https://www.gitlink.org.cn/login)
- 3. 进入设置>个人建站>我的站点
- 4. 新建站点
- 5. 去仓部进行部署
- 6. 安装Bot"个人建站自动部署"
- 💻推送Allure HTML报告到个人建站服务仓库
- ✅查看测试报告
🚀前言
在实际工作中,我们常常需要将测试报告发送给相关方。然而,使用Allure报告存在一定的操作门槛。例如,用户需要先安装Allure程序,再通过特定命令才能查看报告。对于非技术人员来说,这一过程不够友好,不仅增加了使用成本,还降低了工作效率。
为了解决这一问题,我们可以通过GitLink个人建站服务来托管Allure报告。借助这种方式,相关方只需点击一个链接,即可直接查看报告,无需安装任何工具或执行复杂命令。这不仅极大提升了报告的易用性和访问效率,还简化了操作流程,降低了使用门槛,使报告分享变得更加便捷。
🔑开通GitLink个人建站服务
1. 前提条件
- 拥有一个GitLink平台的账号,可通过如下链接进行注册:https://www.gitlink.org.cn/register
- GitLink平台账号已完成实名认证。
2. 登录GitLink平台(https://www.gitlink.org.cn/login)
3. 进入设置>个人建站>我的站点
如果用户未完成实名认证审核,将提示“您尚未通过实名认证,无法使用此服务,如需使用,请先进行实名认证。”, 可点击“前往验证”完成实名认证。
4. 新建站点
5. 去仓部进行部署
6. 安装Bot"个人建站自动部署"
Bot地址:https://www.gitlink.org.cn/softbot/10039
点击“安装此Bot”将Bot安装到个人建站服务的仓库。
安装完成后,在个人建站服务仓库可以查看到已安装的Bot。 Bot检测到仓库有代码推送会自动部署个人建站服务,无需手动点击部署。
💻推送Allure HTML报告到个人建站服务仓库
我们需要把Allure生成的HTML报告全部推送到个人建站服务仓库。具体参考如下:
推送的方式各异,我这里是自动化测试运行结束后,调用了方法push_allure_report
将Allure生成的HTML报告全部推送到个人建站服务仓库。
大家可以参考我的写法。
push_allure_report.py
文件具体内容:
# 第三方模块
from loguru import logger
# 标准库导入
import subprocess
import shutil
import os"""
subprocess.run: 用于执行系统命令。check=True 表示如果命令执行失败会抛出异常。-C 参数用于指定Git命令的工作目录。"""
def copy_all_files(src_dir, dst_dir):"""将源目录中的所有文件和子目录复制到目标目录中。参数:src_dir (str): 源目录路径。dst_dir (str): 目标目录路径。"""try:# 确保目标目录存在os.makedirs(dst_dir, exist_ok=True)# 遍历源目录中的所有文件和子目录for item in os.listdir(src_dir):src_item = os.path.join(src_dir, item) # 源文件/目录的完整路径dst_item = os.path.join(dst_dir, item) # 目标文件/目录的完整路径if os.path.isfile(src_item):# 如果是文件,直接复制shutil.copy2(src_item, dst_item)print(f"复制文件: {src_item} -> {dst_item}")elif os.path.isdir(src_item):# 如果是目录,递归复制shutil.copytree(src_item, dst_item, dirs_exist_ok=True)print(f"复制目录: {src_item} -> {dst_item}")except Exception as e:print(f"复制失败: {e}")def push_allure_report(allure_report_dir: str, remote_url: str, username: str, password: str, branch: str = "master",message: str = "update report"):"""将本地生成的 Allure HTML 报告推送到指定的 GitLink 仓库。:param allure_report_dir : 本地生成的 Allure HTML 报告目录路径。:param remote_url: 远程仓库的HTTP地址, 需要带有.git, 例如:https://gitlink.org.cn/floraachy/floraachy.gitlink.net.git。:param branch: 远程仓库的分支。:param username: 登录远程仓库的用户名。:param password: 登录远程仓库的密码。:param message: 提交更改的说明信息。"""repo_name = remote_url[:-4].split("/")[-1]repo_path = os.path.join(os.path.dirname(allure_report_dir), repo_name)print(f"本地仓库地址:{repo_path}")logger.info(f"本地仓库地址:{repo_path}")try:# 检查目录是否存在if os.path.exists(repo_path):print(f"目录已存在,正在删除: {repo_path}")logger.info(f"目录已存在,正在删除: {repo_path}")shutil.rmtree(repo_path) # 删除目录及其内容# 重新创建目录os.makedirs(repo_path)logger.info(f"目录已重新创建: {repo_path}")print(f"目录已重新创建: {repo_path}")except Exception as e:logger.error(f"操作失败: {e}")print(f"操作失败: {e}")try:# -------------初始化本地仓库并提交代码 -----------------subprocess.run(["git", "-C", repo_path, "init"], check=True)print("初始化本地仓库成功")logger.info("初始化本地仓库成功")auth_remote_url = f"https://{username}:{password}@{remote_url.split("//")[-1]}"print(f"添加远程仓库: {auth_remote_url}")logger.info(f"添加远程仓库: {auth_remote_url}")subprocess.run(["git", "-C", repo_path, "remote", "add", "origin", auth_remote_url], check=True)print("复制 Allure HTML报告所有文件到本地仓库")logger.info("复制 Allure HTML报告所有文件到本地仓库")copy_all_files(src_dir=allure_report_dir, dst_dir=repo_path)print("将更改添加到暂存区")logger.info("将更改添加到暂存区")subprocess.run(["git", "-C", repo_path, "add", "."], check=True)print("提交更改")logger.info("提交更改")subprocess.run(["git", "-C", repo_path, "commit", "-m", message], check=True)print("强制推送代码")logger.info("强制推送代码")subprocess.run(["git", "-C", repo_path, "push", "--force", "origin", branch], check=True)print("Allure 报告推送成功!")logger.success("Allure 报告推送成功!")except subprocess.CalledProcessError as e:print(f"Git 操作失败: {e}")logger.error(f"Git 操作失败: {e}")
然后在run.py
中调用方法push_allure_report
,按照要求传入指定参数,例如:
push_allure_report(allure_report_dir="\report\allure_html", remote_url="C:\1projects\apiautotest_ky\outputs\report\allure_html",username="xxxxx", password="xxxxx"])
✅查看测试报告
当Allure HTML最新报告推送到个人建站仓库后,会自动触发Bot"个人建站自动部署"自动部署最新代码。部署完成后访问网站地址即可查看最新报告。
相关文章:
使用GitLink个人建站服务部署Allure在线测试报告
更多技术文章,访问软件测试社区 文章目录 🚀前言🔑开通GitLink个人建站服务1. 前提条件2. 登录GitLink平台(https://www.gitlink.org.cn/login)3. 进入设置>个人建站>我的站点4. 新建站点5. 去仓部进行部署6. 安…...
Mybatis plus异常: type `java.time.LocalDateTime` not supported by default
1、问题: Java数据库实体对象有字段如下: TableField(typeHandler JacksonTypeHandler.class) private Map<String, Object> dataDetail; 如果dataDetail中有LocalDateTime对象,在保存时会报如下异常: Caused by: com.…...
Django:文件上传时报错in a frame because it set ‘X-Frame-Options‘ to ‘deny‘.
即:使用Content-Security-Policy 1.安装Django CSP中间件: pip install django-csp 2.更改项目配置: # settings.py MIDDLEWARE [...csp.middleware.CSPMiddleware,... ]CSP_DEFAULT_SRC ("self",) CSP_FRAME_ANCESTORS (&q…...
腾讯云 | 微搭低代码快速开发数据表单应用
如上所示,登录腾讯云微搭低代码业务控制台,开始新创建一个应用,创建应用的方式包括,根据实际的业务需求,从模版列表中选择一个模板填入数据模型创建新应用,使用微搭组件自主设计数据模型创建新应用…...
【RabbitMQ】RabbitMQ的核心概念与七大工作模式
🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 在现代分布式系统和微服务架构中,消息队列(Message Queue) 是解决服务间通信、系统解耦和流量削峰的关键技术之一。而 RabbitMQ 作为一…...
金蝶ERP星空对接流程
1.金蝶ERP星空OPENAPI地址: 金蝶云星空开放平台 2.下载金蝶云星空的对应SDK包 金蝶云星空开放平台 3.引入SDK流程步骤 引入Kingdee.CDP.WebApi.SDK 右键项目添加引用,在打开的引用管理器中选择浏览页签,点击浏览按钮,找到从官…...
【C++】基于范围的for循环(range-based for loop)
一. std::vector 元素排布顺序 在 C 中,std::vector 是一个动态数组,用于存储同类型元素的序列。当你向 std::vector 中添加元素时(通常通过 push_back 方法),元素是按照你添加它们的顺序排列的。 具体来说ÿ…...
下载b站视频音频
文章目录 方案一:jjdown如何使用 方案二:bilibili哔哩哔哩下载助手如何使用进入插件网站插件下载插件安装 使用插件下载视频音频:复制音频下载地址 方案三:bat命令下载单个音频下载单个视频下载单个音视频 方案一:jjdo…...
LabVIEW DataSocket 通信库详解
dataskt.llb 是 LabVIEW 2019 内置的核心函数库之一,位于 vi.lib\Platform\ 目录下,专注于 DataSocket 技术的实现。DataSocket 是 NI 提供的网络通信协议,支持跨平台、跨设备的实时数据共享,广泛应用于远程监控、分布式系统集成等…...
金融项目实战
测试流程 测试流程 功能测试流程 功能测试流程 需求评审制定测试计划编写测试用例和评审用例执行缺陷管理测试报告 接口测试流程 接口测试流程 需求评审制定测试计划分析api文档编写测试用例搭建测试环境编写脚本执行脚本缺陷管理测试报告 测试步骤 测试步骤 需求评审 需求评…...
初始网络编程
什么是网络编程? 在网络通信协议下,不同计算机上运行的程序,进行的数据传输。 应用场景:即时通信、网游对战、金融证券、 国际贸易、邮件、等等。 不管是什么场景,都是计算机跟计算机之间通过网络进行数据传输。 …...
编译可以在Android手机上运行的ffmpeg程序
下载代码 git clone gitgithub.com:FFmpeg/FFmpeg.git git checkout n7.0建立build目录 mkdir build cd build创建build.sh脚本 vim build.sh这段脚本的主要功能是配置和编译 FFmpeg,使其能够在 Android 平台上运行,通过设置不同的架构和 API 级别&am…...
使用Kubernetes部署Spring Boot项目
目录 前提条件 新建Spring Boot项目并编写一个接口 新建Maven工程 导入 Spring Boot 相关的依赖 启动项目 编写Controller 测试接口 构建镜像 打jar包 新建Dockerfile文件 Linux目录准备 上传Dockerfile和target目录到Linux 制作镜像 查看镜像 测试镜像 上传镜…...
LC77. 组合
LC77. 组合 题目要求(一)回溯1. 解决思路2. 具体步骤3. 代码实现4. 复杂度分析5. 示例解释示例 1:示例 2: 6. 总结 LC77. 组合 题目要求 (一)回溯 要解决这个问题,我们需要生成从 [1, n] 范围内选择 k 个数的所有可能组合。组合的顺序不重要…...
Android中的ANR(Application Not Responding)现象
Android中的ANR(Application Not Responding)现象是指应用程序未能在规定的时间内响应系统或用户的输入事件,从而触发系统弹出的无响应对话框。以下是关于ANR现象的详细解释: 一、ANR现象的定义 ANR通常发生在以下情况ÿ…...
操作系统启动——前置知识预备
文章目录 1. 理解冯诺依曼体系结构1.1 简单见一见冯诺依曼1.2 进一步认识1.3 为什么一定要有内存的存在? 2. 操作系统2.1 概念2.2 设计OS的目的2.3 OS的核心功能2.4 如何理解“管理”二字?(小故事版)2.5 系统调用和库函数概念 3. 进程简述3.1 基本概念3.…...
Unity中VFX烟雾特效与场景中的碎片物体重叠时闪烁问题
双击Unity项目中vfx特效文件,选中VFX编辑器中的Output Particle节点,看右侧的Inspector窗口 这个图的BlendMode是Alpha, 意味着渲染队列是3000要关闭Z Write Mode, 其值设置为off最后一个属性Sorting Priorty 设置为50,意味着渲染队列在3000…...
[RN]React Native知识框架图详解
React Native 是一个基于 React 的跨平台移动应用开发框架。以下是 React Native 知识框架图的详细解析: React Native 知识框架 1. 核心概念 JSX:JavaScript XML 语法,类似 HTML 的语法,用于描述 UI 组件。组件(Com…...
每日OJ_牛客_游游的字母串_枚举_C++_Java
目录 牛客_游游的字母串_枚举 题目解析 C代码 Java代码 牛客_游游的字母串_枚举 游游的字母串 描述: 对于一个小写字母而言,游游可以通过一次操作把这个字母变成相邻的字母。a和b相邻,b和c相邻,以此类推。特殊的࿰…...
解锁MacOS开发:环境配置与应用开发全攻略
✨✨✨这里是小韩学长yyds的BLOG(喜欢作者的点个关注吧) ✨✨✨想要了解更多内容可以访问我的主页 小韩学长yyds-CSDN博客 目录 引言 一、MacOS 开发环境配置 (一)必备工具安装 (二)集成开发环境(IDE)选…...
IDEA 2025最新版2024.3.3软件安装、插件安装、语言设置
IntelliJ IDEA是一款由JetBrains公司开发的集成开发环境(IDE),主要用于Java语言的开发,它通过提供丰富的功能如智能代码补全、代码分析、版本控制集成等来提高开发效率。 IDEA有社区版和专业版两个版本,社区版是免费开…...
leetcode 0018 四数之和-medium
1 题目:四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复&#x…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_add_dump
ngx_conf_add_dump 定义在src\core\ngx_conf_file.c static ngx_int_t ngx_conf_add_dump(ngx_conf_t *cf, ngx_str_t *filename) {off_t size;u_char *p;uint32_t hash;ngx_buf_t *buf;ngx_str_node_t *sn;ngx_conf_dump_t *cd;has…...
家政预约小程序用例图分析
在和客户进行需求沟通的时候,除了使用常规的问答的形式,我还使用图形化工具更深入的沟通。比如借助UML的用例图来开展系统分析,并且按照角色详细拆解了家政预约小程序的各个用例。在分析阶段思考的越多,沟通的越多,在系…...
unity学习62,尝试做第一个小游戏项目:flappy bird
目录 学习参考 1 创建1个unity 2D项目 1.1 2D项目模板选择 1.1.1 2D(built-in-Render pipeline) 1.1.2 universe 2D 1.1.3 这次选择 2D(built-in-Render pipeline) 1.2 创建项目 1.2.1 注意点 1.2.2 如果想修改项目名 2 导入美术资源包 2.1 下载一个flappy bird的…...
Windows10下本地搭建Manim环境
文章目录 1. 简介2. Python环境3. uv工具4. Latex软件5. 安装Manim数学库6. 中文支持参考 1. 简介 manim是个一科普动画的库, 本文用到的是社区版本。 2. Python环境 这个不用多说,可以参考其他的文章。记得把pip也安上。 3. uv工具 上面的pip是老…...
zabbix“专家坐诊”第277期问答
在线答疑:乐维社区 问题一 Q:这个怎么解决呢? A:缺少这个依赖。 Q:就一直装不上。 A:装 zabbix-agent2-7.0.0-releasel.el7.x86 64 需要前面提示的那个依赖才可以装。 问题二 Q:大佬,如果agen…...
解决git clone下载慢或者超时问题
在网上找了很多办法,直接最简单的使用镜像网站下载。 国内可用的镜像网站有: https://github.com.cnpmjs.org # 服务器位于香港https://gitclone.com # 服务器位于杭州https://doc.fastgit.org # 服务器位于香港 例如:将 git clone https:…...
机器学习:强化学习的epsilon贪心算法
强化学习(Reinforcement Learning, RL)是一种机器学习方法,旨在通过与环境交互,使智能体(Agent)学习如何采取最优行动,以最大化某种累积奖励。它与监督学习和无监督学习不同,强调试错…...
MySQL-高级查询
查询处理 排序(默认不是按主键排序的) order by 字段1[,字段2] [asc|desc] 默认是升序排序也可以指定 select 列表中列的序号进行排序如果是多个字段,那么在上一个字段排序完的基础上排序下一个 限制数量 limit 行数࿰…...
NModbus 连接到Modbus服务器(Modbus TCP)
1、在项目中通过NuGet添加NModbus,在界面中添加一个Button。 using NModbus.Device; using NModbus; using System.Net.Sockets; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Docu…...
value_counts()和unique()
我今天发现一个很有意思的问题哈 import scanpy as sc import numpy as npX np.random.randn(10,3) adata1 sc.AnnData(X) adata1.obs["sample"] "H1" print(adata1)X np.random.randn(20,3) adata2 sc.AnnData(X) adata2.obs["sample"] &…...
FinRobot:一个使用大型语言模型进行金融分析的开源AI代理平台
文章目录 前言一、生态系统1. 金融AI代理(Financial AI Agents)2. 金融大型语言模型(Financial LLMs)3. LLMOps4. 数据操作(DataOps)5. 多源LLM基础模型(Multi-Source LLM Foundation Models&am…...
示例:在WPF中如何使用Segoe MDL2 Assets图标和使用该图标的好处
一、目的:分享在WPF中如何使用Segoe MDL2 Assets图标和使用该图标的好处 在WPF中使用Segoe MDL2 Assets字体,可以通过设置控件的FontFamily属性来实现。Segoe MDL2 Assets是一个包含许多图标的字体,通常用于Windows应用程序的图标显示。 二、…...
使用UA-SPEECH和TORGO数据库验证自动构音障碍语音分类方法
使用UA-SPEECH和TORGO数据库验证自动构音障碍语音分类方法 引言 原文:On using the UA-Speech and TORGO databases to validate automatic dysarthric speech classification approaches 构音障碍简介 构音障碍是一种由于脑损伤或神经疾病(如脑瘫、肌萎缩侧索硬化症、帕金森…...
容器与虚拟机:云时代的底层架构博弈
容器与虚拟机:云时代的底层架构博弈 在数字化浪潮席卷的当下,云技术已成为企业和开发者不可或缺的基础设施。在云环境中,容器和虚拟机作为两种关键的底层技术,犹如双子星般备受瞩目。它们究竟谁能在这场技术较量中脱颖而出&#x…...
解决android studio(ladybug版本) gradle的一些task突然消失了
今天不知道干了啥,AS(ladybug版本)右边gradle的task有些不见了,研究了半天解决了,这里记录下: 操作: File -->Settings-->Experimental--> 取消选项“Enable support for multi-vari…...
Wpf-ReactiveUI-Usercontrol交互
文章目录 1、使用属性绑定UserControl 部分(MyUserControl.xaml.cs)UserControl 视图模型部分(MyUserControlViewModel.cs)主界面部分(MainWindow.xaml)主界面视图模型部分(MainWindowViewModel.cs)2、使用消息传递UserControl 视图模型部分(MyUserControlViewModel.c…...
Unity插件-Mirror使用方法(四)组件介绍(Network Manager HUD)
目录 一、插件介绍 二、主要组件 Network Manager 三、Network Manager HUD 1、组件介绍 2、NetworkManagerHUD 的核心功能 快速操作按钮 状态信息显示 场景切换支持 调试辅助 3、关键属性与配置 4、HUD 界面详解 【主机模式(服务器客户端)…...
UDP协议(20250303)
1. UDP UDP:用户数据报协议(User Datagram Protocol),传输层协议之一(UDP,TCP) 2. 特性 发送数据时不需要建立链接,节省资源开销不安全不可靠的协议 //一般用在实时性比较高…...
【量化金融自学笔记】--开篇.基本术语及学习路径建议
在当今这个信息爆炸的时代,金融领域正经历着一场前所未有的变革。传统的金融分析方法逐渐被更加科学、精准的量化技术所取代。量化金融,这个曾经高不可攀的领域,如今正逐渐走进大众的视野。它将数学、统计学、计算机科学与金融学深度融合&…...
振弦采集仪多通道振弦采集终端 物联网振弦监测 智能振弦监测系统
振弦采集仪多通道振弦采集终端 物联网振弦监测 智能振弦监测系统 VD416_DIN 多通道振弦温度综合采集仪采用模块化设计,配备 32 通道传感器接口,支持两种高效工作模式:16 通道振弦频率与 16 通道温度同步采集,或 32 通道振弦频率专…...
Synchronized解析
一、底层原理:Monitor机制 对象锁与Monitor关联 synchronized通过对象锁实现互斥,每个Java对象都可以关联一个Monitor(监视器),其底层由JVM用C实现。当线程进入synchronized代码块时,会尝试获取与锁对象关联…...
别再瞎学!C 语言入门看这篇就够了
目录 1. 如何学好C语言 2. C语言是什么? 3. C语⾔的历史和辉煌 4. 编译器的选择 4.1 编译和链接 4.2 编译器大比拼,VS2022 脱颖而出 4.3 VS2022 优缺点大揭秘 5. VS项⽬ 和 源⽂件、头⽂件介绍 6. 第一个C语言程序 7. main 函数:程序…...
Linux操作系统5-进程信号2(信号的4种产生方式,signal系统调用)
上篇文章:Linux操作系统5-进程信号1(信号基础)-CSDN博客 本篇Gitee仓库:myLerningCode/l25 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 本篇重点:信号的4种产生 目录 一. signal系统调用 …...
【Groovy】Array、List、Set、Map简介
1 Array 1.1 创建数组 1.1.1 创建一维数组 int[] arr1 new int[2] arr1[0] 1 arr1[1] 2float[] arr2 new float[] { 1f, 2f, 3f } String[] arr3 ["abc", "xyz"] as String[] 1.1.2 创建二维数组 int[][] arr1 new int[2][2] arr1[0][0] 1 arr…...
DeepSeek与数据分析:现状、挑战与未来展望
在当今数字化时代,人工智能(AI)的浪潮正以前所未有的速度席卷各个领域,数据分析作为众多行业决策的关键支撑,也不可避免地受到AI技术发展的深刻影响。近期,AI话题持续火热,不少企业老板要求员工…...
【通俗讲解电子电路】——从零开始理解生活中的电路(三)
实际应用案例:生活中的电子电路 ——拆解你身边的“隐形工程师” 1. 手电筒电路:最简单的直流系统 电路组成 电源:2节1.5V电池(串联3V)。 开关:按钮控制回路通断。 LED:发光二极管ÿ…...
JVM基本概念及内存管理模型
一、JVM基本概念 JVM(Java Virtual Machine,Java 虚拟机)是 Java 程序运行的核心组件。它负责将 Java 字节码转换为特定平台的机器指令,并提供内存管理、垃圾回收、安全性等功能。JVM 的主要功能包括以下: 加载和执行…...
【CPP面经】科大讯飞 腾讯后端开发面经分享
文章目录 C 面试问题整理基础问题简答1. 内存对齐2. this 指针3. 在成员函数中删除 this4. 引用占用内存吗?5. C 越界访问场景6. 进程通信方式7. 无锁队列实现8. ping 在哪一层?实现原理?9. HTTPS 流程10. GDB 使用及 CPU 高使用定位11. 智能…...