使用GitLink个人建站服务部署Allure在线测试报告

news2025/3/10 18:33:39

更多技术文章,访问软件测试社区

文章目录

    • 🚀前言
    • 🔑开通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. 新建站点

实名认证审核通过后,按照要求新建站点即可。
站点新建成功后, 会生成一个对应的仓库,仓库名格式参考如下:{平台登录的login}.gitlink.net。同时部署的服务的网址格式如下:http://{平台登录的login}.gitlink.net/
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. 去仓部进行部署

点击“去仓库”,可以查看到刚刚构建的个人建站服务仓库。
正常流程下:将allure html报告的文件推送到仓库,在"服务tab>个人建站服务”,点击部署即可成功部署Allure测试报告在线服务。
这里我们将使用Bot自动部署服务。
在这里插入图片描述

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="http:xxxxxxx.git",
                           username="xxxxx", password="xxxxx"])

✅查看测试报告

当Allure HTML最新报告推送到个人建站仓库后,会自动触发Bot"个人建站自动部署"自动部署最新代码。部署完成后访问网站地址即可查看最新报告。
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2311859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

专业学习|多线程、多进程、多协程加速程序运行

学习资料来源:【2021最新版】Python 并发编程实战,用多线程、多进程、多协程加速程序运行_哔哩哔哩_bilibili 若有侵权,联系删除。 一、程序的提速方法——多线程、多进程、多协程 在现代编程中,多线程、多进程和多协程是三种常见…

C/C++蓝桥杯算法真题打卡(Day3)

一、P8598 [蓝桥杯 2013 省 AB] 错误票据 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;int main() {int N;cin >> N; // 读取数据行数unordered_map<int, int> idCount; // 用于统计每个ID出现的次数vector<int> ids; …

烟花燃放安全管控:智能分析网关V4烟火检测技术保障安全

一、方案背景 在中国诸多传统节日的缤纷画卷中&#xff0c;烟花盛放、烧纸祭祀承载着人们的深厚情感。一方面&#xff0c;烟花璀璨&#xff0c;是对节日欢庆氛围的热烈烘托&#xff0c;寄托着大家对美好生活的向往与期许&#xff1b;另一方面&#xff0c;袅袅青烟、点点烛光&a…

【Bert系列模型】

目录 一、BERT模型介绍 1.1 BERT简介 1.2 BERT的架构 1.2.1 Embedding模块 1.2.2 双向Transformer模块 1.2.3 预微调模块 1.3 BERT的预训练任务 1.3.1 Masked Language Model (MLM) 1.3.2 Next Sentence Prediction (NSP) 1.4 预训练与微调的关系 1.5 小结 二、BERT…

android接入rocketmq

一 前言 RocketMQ 作为一个功能强大的消息队列系统&#xff0c;不仅支持基本的消息发布与订阅&#xff0c;还提供了顺序消息、延时消息、事务消息等高级功能&#xff0c;适应了复杂的分布式系统需求。其高可用性架构、多副本机制、完善的运维管理工具&#xff0c;以及安全控制…

前端数据模拟 Mock.js 学习笔记

mock.js介绍 Mock.js是一款前端开发中拦截Ajax请求再生成随机数据响应的工具&#xff0c;可以用来模拟服务器响应 优点是&#xff1a;非常方便简单&#xff0c;无侵入性&#xff0c;基本覆盖常用的接口数据类型支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜…

用DeepSeek-R1-Distill-data-110k蒸馏中文数据集 微调Qwen2.5-7B-Instruct!

下载模型与数据 模型下载&#xff1a; huggingface&#xff1a; Qwen/Qwen2.5-7B-Instruct HF MirrorWe’re on a journey to advance and democratize artificial intelligence through open source and open science.https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct 魔搭&a…

DeepSeek大模型 —— 全维度技术解析

DeepSeek大模型 —— 全维度技术解析 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 文章目录 DeepSeek大模型 —— 全维度技术解析一、模型架构全景解析1…

EasyRTC嵌入式音视频通话SDK:基于ICE与STUN/TURN的实时音视频通信解决方案

在当今数字化时代&#xff0c;实时音视频通信技术已成为人们生活和工作中不可或缺的一部分。无论是家庭中的远程看护、办公场景中的远程协作&#xff0c;还是工业领域的远程巡检和智能设备的互联互通&#xff0c;高效、稳定的通信技术都是实现这些功能的核心。 EasyRTC嵌入式音…

qt open3dAlpha重建

qt open3dAlpha重建 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionAlpha_triggered();//alpha重建 void MainWindow::

《深入浅出数据索引》- 公司内部培训课程笔记

深入浅出数据索引 内容&#xff1a;索引理论&#xff0c;索引常见问题&#xff0c;索引最佳实践&#xff0c;sql优化实战&#xff0c;问答 哈希不支持范围查询 4层 几个亿 5层 几十亿上百亿 B树的分裂&#xff0c;50-50分裂 都是往上插一个元素&#xff08;红黑树是左右旋转&a…

PPT 技能:巧用 “节” 功能,让演示文稿更有序

在制作PPT时&#xff0c;你是否遇到过这样的情况&#xff1a;幻灯片越来越多&#xff0c;内容越来越杂&#xff0c;找某一页内容时翻得眼花缭乱&#xff1f;尤其是在处理大型PPT文件时&#xff0c;如果没有合理的结构&#xff0c;编辑和调整都会变得非常麻烦。这时候&#xff0…

Xss漏洞问题

https://bu1.github.io/2021/01/12/%E7%AC%AC%E5%8D%81%E4%BA%8C%E5%91%A8%EF%BC%9AXSS%E6%BC%8F%E6%B4%9E%E5%AD%A6%E4%B9%A0%E5%AE%9E%E6%88%98/ 后端绕开了前端&#xff0c;直接调用接口入库&#xff1a; <select οnchange“alert(1)”>12 前端拿到这个文本后&…

Docker概念与架构

文章目录 概念docker与虚拟机的差异docker的作用docker容器虚拟化 与 传统虚拟机比较 Docker 架构 概念 Docker 是一个开源的应用容器引擎。诞生于 2013 年初&#xff0c;基于 Go 语言实现。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xf…

3.使用ElementUI搭建侧边栏及顶部栏

1. 安装ElementUI ElementUI是基于 Vue 2.0 的桌面端组件库。使用之前&#xff0c;需要在项目文件夹中安装ElementUI&#xff0c;在终端中输入以下命令&#xff0c;进行安装。 npm i element-ui -S并在main.js中引入ElementUI 2. 使用elmentUI组件进行页面布局 2.1 清空原…

C# OPC DA获取DCS数据(提前配置DCOM)

OPC DA配置操作手册 配置完成后&#xff0c;访问远程ip&#xff0c;就能获取到服务 C#使用Interop.OPCAutomation采集OPC DA数据&#xff0c;支持订阅&#xff08;数据变化&#xff09;、单个读取、单个写入、断线重连

不同开发语言之for循环的用法、区别总结

一、Objective-C &#xff08;1&#xff09;标准的c风格 for (int i 0; i < 5; i) {NSLog("i %d", i); } &#xff08;2&#xff09;for in循环。 NSArray *array ["apple", "banana", "orange"]; for (NSString *fruit in …

MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模

2025-03-05&#xff0c;由华为诺亚方舟实验室、捷克技术大学和帝国理工学院联合开发的MuBlE&#xff08;MuJoCo and Blender simulation Environment&#xff09;模拟环境和基准测试。通过结合MuJoCo物理引擎和Blender高质量渲染&#xff0c;为机器人操作任务规划提供了逼真的视…

ASP.NET Core 6 MVC 文件上传

概述 应用程序中的文件上传是一项功能&#xff0c;用户可以使用该功能将用户本地系统或网络上的文件上传到 Web 应用程序。Web 应用程序将处理该文件&#xff0c;然后根据需要对文件进行一些验证&#xff0c;最后根据要求将该文件存储在系统中配置的用于保存文件的存储中&#…

2025年03月07日Github流行趋势

项目名称&#xff1a;ai-hedge-fund 项目地址url&#xff1a;https://github.com/virattt/ai-hedge-fund项目语言&#xff1a;Python历史star数&#xff1a;12788今日star数&#xff1a;975项目维护者&#xff1a;virattt, seungwonme, KittatamSaisaard, andorsk, arsaboo项目…