不安装Allure的情况下如何在本地正常打开allure html报告

前言

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

注意:本文方法只适用于windows

解决办法一(需安装Chrome)

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

新建一个txt文件,名称自定义,例如“openReport.bat”, 输入如下内容:

@echo off
setlocal enabledelayedexpansion

set "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_path
        set "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/tmp" "%~dp0/index.html"


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

解决办法二(未安装chrome使用手写服务打开)

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

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

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


```python
# -*- 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 sys


class 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 = bind
        self.port = port
        self.directory = directory
        args = sys.argv
        for 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值