前言
我们使用pytest+allure生成Allure测试报告后,需要发给领导查看报告的详细信息。此时我们通过将allure生成的html报告压缩成压缩包后发送给领导,但是领导电脑由于没有安装Allure服务,打开会全部显示“Loading”, 无法查看到报告的具体内容。(如下图所示)
那么此时我们应该怎么办呢?
解决办法一
前提:电脑安装了Chrome浏览器(注册表里面能够找到chrome)
新建一个txt文件,名称自定义,例如“双击打开报告.txt”, 输入如下内容:
@echo off
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 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。 任一条件不满足,就无法打开报告。
针对上述问题进行了优化。
首先修改“双击打开报告.bat”, 如下:
@echo off
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 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
::关闭浏览器后 杀死web服务进程
taskkill /f /im http-server.exe >nul
::退出cmd
exit
)
将一个http-server.exe (下载地址待上传)放在“双击打开报告.bat”统计目录下。
此时如果找不到chrome浏览器,就会自动通过http-server启动默认浏览器打开测试报告。