如何让领导轻松在本地查看Allure报告

如何让领导轻松在本地查看Allure报告

问题描述

当我们把精心生成的Allure报告原始文件发送给领导后,领导直接打开index.html文件时,页面却一直处于加载状态,无法显示数据。

image

通过F12开发者工具检查,我们发现这是由于浏览器跨域请求问题导致的。具体来说,当尝试通过XMLHttpRequest对象从本地文件系统中访问文件时,现代浏览器出于安全原因,默认禁止了这种行为。

image

解决方案

为了解决这个问题,使用Python HTTP服务器或其他Web服务器来托管Allure报告是一个行之有效的方案(当然,还有其他方式)。通过这种方式,我们可以通过http://https://协议来访问报告,从而轻松绕过CORS策略的限制。

以下是Python HTTP服务器的代码实现:

import http.server
import socketserver
import os
from functools import partial
import sys

class HttpServer:
    def __init__(self, bind="127.0.0.1", port=9988, directory=os.getcwd()):
        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}\nServing HTTP on {self.bind} port {self.port}\nhttp://{self.bind}:{self.port}/")
                httpd.serve_forever()
        except KeyboardInterrupt:
            print("\nKeyboard interrupt received, exiting.")
            sys.exit(0)

if __name__ == '__main__':
    server = HttpServer()
    server.run()

操作步骤:

  1. 将上述脚本保存在与Allure报告的index.html文件相同的目录下。
    image
  2. 执行脚本,并访问提供的地址。
    image

通过这种方法,我们可以成功访问Allure报告,并且数据也能正确加载。

image

ok,接下来解决领导没有python环境的问题。

解决Python环境问题

考虑到领导可能没有Python环境,我们可以利用第三方库pyinstaller对代码进行打包,生成无需Python环境即可执行的程序。

安装pyinstaller

pip install pyinstaller

打包脚本:

pyinstaller -F http_server.py

打包完成后,在dist目录下会生成一个可执行文件(例如http_server.exe)。

image

image

将生成的.exe文件移动到index.html文件相同的目录下。运行.exe文件。

image

访问提供的地址,即可成功查看Allure报告。

image

http_server下载链接

对于没有Python环境的朋友,可以通过网页版阿里云盘直接下载http_server.exe文件: https://www.alipan.com/s/QNWwFz1QKAj

image

posted @ 2024-11-20 14:28  测试小罡  阅读(69)  评论(0编辑  收藏  举报