Allure在本地不安装allure服务的情况下打开Allure Html报告

news/2025/1/8 20:25:15/

前言

我们使用pytest+allure生成Allure测试报告后,需要发给领导查看报告的详细信息。此时我们通过将allure生成的html报告压缩成压缩包后发送给领导,但是领导电脑由于没有安装Allure服务,打开会全部显示“Loading”, 无法查看到报告的具体内容。(如下图所示)
那么此时我们应该怎么办呢?
在这里插入图片描述

注意: 本文方法只支持Windows。

解决办法一

前提:电脑安装了Chrome浏览器(注册表里面能够找到chrome)

新建一个txt文件,名称自定义,例如“双击打开报告.txt”, 输入如下内容:

@echo off
setlocal enabledelayedexpansionset "chrome_path="
::从注册表查找谷歌浏览器路径
set reg_query_command=reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe" /ve::遍历注册表查询结果
for /f "tokens=2*" %%A in ('%reg_query_command%') do (::如果有REG_SZ,则证明找到了谷歌浏览器if "%%A"=="REG_SZ" (::如果路径存在,则设置谷歌浏览器绝对路径到变量chrome_pathset "tmp_chrome_path=%%B"if exist "!tmp_chrome_path!" (set "chrome_path=%%B"))
)::打印找到了谷歌浏览器的文件地址
echo Chrome found at: "%chrome_path%"
::带参启动谷歌浏览器,使其不校验跨域问题(./表示当前目录, 可以修改为你所需要的工作目录)
%chrome_path% --disable-web-security --user-data-dir="./" %~dp0/index.html

修改“双击打开报告.txt”的文件后缀为.bat, 例如“双击打开报告.bat”。并将文件防止在allure html报告的根目录下:
在这里插入图片描述

然后双击“双击打开报告.bat”就可以打开报告啦~
在这里插入图片描述

解决办法二

上面的方法,要求必须安装了chrome浏览器,以及注册表里面能找到chrome。 任一条件不满足,就无法打开报告。

我们需要了解打开allure-html报告的原理,其实就是将allure-html报告以静态文件服务器的方式打开。因此我们需要一个服务来支撑我们打开allure-html报告。

1. 使用python写一个服务

首先我们先使用python自带的模块http.server来写一个服务,具体代码如下:
文件名:http_server.py

# -*- coding: utf-8 -*-
# @Time    : 2023/5/24 9:34
# @Author  : chenyinhua
# @File    : http_server.py
# @Software: PyCharm
# @Desc:import http.server
import socketserver
import os
from functools import partial
import sysclass HttpServer:def __init__(self, bind: str = "127.0.0.1", port: int = 8000, directory=os.getcwd()):""":param bind: 指定地址,如本地主机:param port: 自定义端口号, 服务器默认监听端口是 8000:param directory: 指定工作目录, 服务器默认工作目录为当前目录"""self.bind = bindself.port = portself.directory = directoryargs = sys.argvfor i in range(1, len(args)):if args[i] == "-port" and i + 1 < len(args):self.port = int(args[i + 1])if args[i] == "-dir" and i + 1 < len(args):self.directory = args[i + 1]if args[i] == "-bind" and i + 1 < len(args):self.bind = args[i + 1]def run(self):try:with socketserver.TCPServer((self.bind, self.port), partial(http.server.SimpleHTTPRequestHandler,directory=self.directory)) as httpd:print(f"工作目录:{self.directory}\n"f"Serving HTTP on {self.bind} port {self.port} \n"f"http://{self.bind}:{self.port}/ ...")httpd.serve_forever()except KeyboardInterrupt:print("\nKeyboard interrupt received, exiting.")sys.exit(0)if __name__ == '__main__':server = HttpServer()server.run()

2. 将服务打包成exe文件

然后将这个服务使用Pyinstaller模块打包成exe文件。
1)安装Pyinstaller: pip install pyinstaller
2) 打包python服务:pyinstaller -F Python 源文件, 例如pyinstaller -F Python http_server.py

打包后会生成一个build目录,dist目录,http_server.spec文件。 我们只需要用到dist目录下的http_server.exe。

3) 将http_server.exe复制到allure-html报告根目录下。
在这里插入图片描述

3. 改写“双击打开报告.bat”

原理是google未安装的情况下,就启动http_server.exe打开allure-html报告。
可以通过-bing指定地址,-port指定端口,-dir指定工作目录。
例如:http-server.exe -port 5001

改写后内容如下:

@echo off
setlocal enabledelayedexpansionset "chrome_path="
::从注册表查找谷歌浏览器路径
set reg_query_command=reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe" /ve::遍历注册表查询结果
for /f "tokens=2*" %%A in ('%reg_query_command%') do (::如果有REG_SZ,则证明找到了谷歌浏览器if "%%A"=="REG_SZ" (::如果路径存在,则设置谷歌浏览器绝对路径到变量chrome_pathset "tmp_chrome_path=%%B"if exist "!tmp_chrome_path!" (set "chrome_path=%%B"))
)::如果上面找到了谷歌浏览器的路径
if defined chrome_path (::打印找到了谷歌浏览器的文件地址echo Chrome found at: "%chrome_path%"::带参启动谷歌浏览器,使其不校验跨域问题 (./表示当前目录, 可以修改为你所需要的工作目录)"%chrome_path%" --disable-web-security --user-data-dir="./" %~dp0/index.html
) else ( ::如果没找到,打印没找到echo Chrome not found.::打印启动web信息echo start a webserver ...::启动一个web服务监听5001端口,在后台运行。默认用当前文件夹的index.html作为首页start /b http_server.exe -port 5001::使用默认浏览器打开web服务的地址并等待浏览器关闭start "" /WAIT http://127.0.0.1:5001
)

“双击打开报告.bat”也放在allure-html报告根目录下。
在这里插入图片描述

4. 打开测试报告

双击“双击打开报告.bat”文件,会自动调用http-server(未安装google浏览器的情况)并使用默认浏览器打开http://127.0.0.1:5001地址,就可以看到测试报告啦~
在这里插入图片描述

解决方法三

上述方法二存在一个问题:当电脑设置了默认浏览器是Google,但是找不到Google的时候会无法打开报告。原因在于启动服务打开报告是使用电脑的默认浏览器打开的。
在这里插入图片描述
为了解决这个问题,继续优化了一下“双击打开报告.bat”里面的内容。优化后如下所示:

@echo off
setlocal enabledelayedexpansionset "chrome_path="
::从注册表查找谷歌浏览器路径
set reg_query_command=reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe" /ve::遍历注册表查询结果
for /f "tokens=2*" %%A in ('%reg_query_command%') do (::如果有REG_SZ,则证明找到了谷歌浏览器if "%%A"=="REG_SZ" (::如果路径存在,则设置谷歌浏览器绝对路径到变量chrome_pathset "tmp_chrome_path=%%B"if exist "!tmp_chrome_path!" (set "chrome_path=%%B"))
)::如果上面找到了谷歌浏览器的路径
if defined chrome_path (::打印找到了谷歌浏览器的文件地址echo Chrome found at: "%chrome_path%"::带参启动谷歌浏览器,使其不校验跨域问题"%chrome_path%" --disable-web-security --user-data-dir="./" %~dp0/index.html
) else (::如果没找到,打印没找到echo Chrome not found.::打印启动web信息echo start a webserver ...::启动一个web服务监听5001端口,在后台运行。默认用当前文件夹的index.html作为首页start /b http_server.exe -port 5001::使用Edge浏览器打开web服务的地址并等待浏览器关闭start /WAIT msedge.exe http://127.0.0.1:5001
)

http://www.ppmy.cn/news/92565.html

相关文章

经典 SQL 数据库笔试题及答案整理

马上又是金三银四啦&#xff0c;有蛮多小伙伴在跳槽找工作&#xff0c;但对于年限稍短的软件测试工程师&#xff0c;难免会需要进行笔试&#xff0c;而在笔试中&#xff0c;基本都会碰到一道关于数据库的大题&#xff0c;今天这篇文章呢&#xff0c;就收录了下最近学员反馈上来…

MyBatis快速入门

目录 一、什么是MyBatis 二、MyBatis的学习要领 三、搭建第一个MyBatis 3.1 创建数据库和表 3.2 添加MyBatis框架支持 3.2.1 老项目添加MyBatis 3.2.2 新项目去添加MyBatis 3.3 设置MyBatis配置信息 3.3.1 设置数据库连接的相关信息 3.3.2 设置MyBatis xml保存路径 和…

实时频谱分析-2.3实时频谱分析

实时频谱分析 频谱分析要想归入实时类别中&#xff0c;必须没有间隙地、不确定地处理关心的频宽内包含的所有信息。RSA 必须获得时域波形中包含的全部信息&#xff0c;把信息转换成频域信号。实时完成这一点必须满足多个重要的信号处理要求&#xff1a; 1&#xff09;提供足够…

【VLAN如何划分?6个方法帮你解决!好用又简单!】

如何选择交换机&#xff1f;如何根据项目确定网络结构&#xff1f;交换机做为大家工作中最常用的设备之一&#xff0c;关于它的选择&#xff0c;不得不知。 在做项目时都有这样的疑问&#xff0c;因为参数决定了项目预算&#xff0c;常用的园区组网技术也是多种多样。 我们来…

C和指针(一)基础

注释 1&#xff0c;C是自由格式的语言&#xff0c;没有规则要求怎样书写语句&#xff0c;但是遵守约定可以使代码清晰更易阅读。 2&#xff0c;/*和*/成对使用&#xff0c;不能嵌套。 3&#xff0c;需要注释整块代码尽量使用#if…#endif方式&#xff0c;其他注释方式如果代码中…

OpenGL之着色器

文章目录 什么是着色器数据类型输入与输出Uniform三角形渐变色例子从文件中读取 什么是着色器 着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的&#xff0c;它包含一些针对向量和矩阵操作的有用特性。着色器的开头总是要声明版本&#xff0c;接着是输入和输…

js对手机号进行脱敏处理

// 手机号码脱敏处理:方法1var phone"13812345678";var strphone.substring(0,3)"****"phone.substring(7);// 手机号码脱敏处理:方法2var phone"13812345678";var strphone.substr(0,3)"****"phone.substring(7);// 区别是&#xff1…

SciPy.stats 库interval() 函数计算置信区间

NumPy 置信区间-火焰兔 平均值的置信区间是数据分析领域广泛用于数据的统计数据的重要组成部分。Python 是数据分析领域的专业人员使用的最流行的编程语言之一&#xff0c;它允许在数组上实现置信区间。 本教程讨论置信区间并演示可用于在 Python 中实现它的不同方法。 置信…