当前位置: 首页 > news >正文

使用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"个人建站自动部署"自动部署最新代码。部署完成后访问网站地址即可查看最新报告。
在这里插入图片描述

在这里插入图片描述

相关文章:

  • 【Swift 算法实战】存在重复元素 III
  • 第五天 Labview数据记录(5.2 Text文件读写)
  • 鸿蒙5.0实战案例:基于webview拉起自定义键盘
  • VS2015 c++和cmake配置编程
  • Github 2025-03-03 开源项目周报Top14
  • QTableWidget之表格列的隐藏与显示(折叠)
  • C++并发以及多线程的秘密
  • C#—csv文件格式操作
  • stm32移植LCD2002驱动
  • 爬虫逆向实战小记——解决webpack实记
  • 歌叽歌叽V2.0.5--原创音乐制作工具安装与部署
  • linux 如何查看gpu使用情况
  • 深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
  • Java分支和循环结构详解/while/do while /for循环详解/死循环/Random用法
  • 如何优化Android应用的性能
  • leetcode113-路径总和II
  • STM32---FreeRTOS中断管理试验
  • WebP2P技术在嵌入式设备中的应用:EasyRTC音视频通话SDK如何实现高效通信?
  • Baklib内容中台赋能企业智管
  • FastGPT 源码:如何实现 “问题优化“
  • 梅州网站制作baidu/营销策划方案怎么做
  • 简单设计网站/广州网站到首页排名
  • 书籍封面设计网站/哪里做网络推广
  • 怎么样才能把网站关键词做有排名靠前/搜索引擎优化是什么意思
  • 衡阳做淘宝网站建设/看广告赚钱的平台
  • 帮别人建网站赚钱吗/做网站推广需要多少钱