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

Pytest-如何将allure报告发布至公司内网

原理简介

使用Python启动HTTP服务器,指定一个端口号port,内网用户可以使用ip+port访问报告。

本文章继续进阶,简单使用nginx进行一个代理,使用域名可以直接访问报告。

前情概述

Pytest-allure如何在测试完成后自动生成完整报告?-CSDN博客

代码一览 

conftest.py

# 报告使用的端口
port = 4965

def send_test_report():
    # 获取代码的根目录
    current_dir = os.path.dirname(os.path.abspath(__file__))
    shell_path = os.path.join(current_dir, "start_allure_server.sh")
    report_dir = os.path.join(current_dir, "report")
    results_dir = os.path.join(current_dir, "results")
    # 传参report_dir和results_dir,给shell脚本
    os.system(f'{shell_path} {report_dir} {results_dir} {port}')

在conftest文件中增加如上代码。

主要作用:找到报告的目录,并且带上port参数一起传给下一步的shell脚本,指定到最后一行时,则会去继续执行shell脚本里面的内容。

start_allure_server.sh

#!/bin/bash

report_dir="$1"
results_dir="$2"
port="$3"

# 生成 Allure 报告
allure generate "$results_dir" -o "$report_dir" --clean
cd "$report_dir"

# 启动 HTTP 服务器
nohup python -m http.server "$port" &

这段代码意思很简单,获取前文传递的参数,并执行生成报告的命令。在这一步生成报告是为了防止还有用例没有执行完,和在conftest里面生成报告的效果一致。

初步效果展示

完成上述步骤后,至此就可以使用ip+port访问报告了。

在本地可以使用localhost+port访问。

使用nginx代理

下载nginx并安装

nginx: 下载 

安装后解压即可使用。

配置

在安装目录的conf中,有一个nginx.conf

使用如下配置

worker_processes 1;

# 错误日志配置
error_log logs/error.log info;

# PID 文件配置
pid logs/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

	server {
		listen 80;
		server_name xxxxx; # 替换成你需要的域名

		# 临时重定向所有请求到/services/
		location / {
			return 302 /services/;
		}

		# 代理 /services/ 到 http://localhost:4965 
		location /services/ {
			proxy_pass http://localhost:4965/;
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
		}
	}
}

 简单来说,只需要把你使用的port替换,再指定你需要的域名,即可实现。


http://www.kler.cn/news/318708.html

相关文章:

  • 微生物多样性数据的可视化技巧
  • 新能源汽车数据大全(产销数据\充电桩\专利等)
  • brpc之io事件分发器
  • 【会议征稿通知】第三届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2024)
  • Java使用Map数据结构配合函数式接口存储方法引用
  • 洛谷P2571.传送带
  • request库的使用 | get请求
  • 微软Active Directory:组织身份与访问管理的基石
  • 字符串——String
  • 量子计算如何引发第四次工业革命——解读加来道雄的量子物理观
  • Android平台使用VIA创建语音交互应用
  • 【ArcGIS微课1000例】0122:经纬网、方里网、参考格网绘制案例教程
  • 0基础带你入门Linux之使用
  • 初识C#(一)
  • 2.以太网
  • 毕设基于SSM+Vue3实现设备维修管理系统四:后台框架及基础增删改查功能实现
  • 常见区块链数据模型介绍
  • [leetcode]113_路径总和II_输出所有路径
  • 【AIGC】ChatGPT RAG提取文档内容,高效制作PPT、论文
  • day-59 四数之和
  • 【React】(推荐项目)使用 React、Socket.io、Nodejs、Redux-Toolkit、MongoDB 构建聊天应用程序 (2024)
  • 数据集-目标检测系列-海洋鱼类检测数据集 fish>> DataBall
  • short-link笔记
  • ubuntu 24.04 输入设备显示没有,系统没有找到电脑麦克风
  • web平台搭建-LAMP(CentOS-7)
  • 【自动驾驶】基于车辆几何模型的横向控制算法 | Stanley 算法详解与编程实现
  • ai写论文哪个平台好?分享4款ai论文写作平台软件
  • Python范例总结
  • 【计算机视觉】YoloV8-训练与测试教程
  • javascript是什么语言?它是干什么的?