增加Jenkins修改allure报告名称的方法,优化本地修改allure报告名称的方法
This commit is contained in:
parent
4459b8e64f
commit
8da0e848ad
|
@ -12,8 +12,6 @@ import allure
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from common.models import AllureAttachmentType
|
from common.models import AllureAttachmentType
|
||||||
from common.settings import ENV
|
|
||||||
from configs.env_config import EnvConfig
|
|
||||||
from configs.paths_config import TEMP_DIR, ALLURE_REPORT_DIR
|
from configs.paths_config import TEMP_DIR, ALLURE_REPORT_DIR
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,14 +111,16 @@ class AllureReportBeautiful:
|
||||||
@return:
|
@return:
|
||||||
"""
|
"""
|
||||||
title_filepath = os.path.join(ALLURE_REPORT_DIR, "widgets", "summary.json")
|
title_filepath = os.path.join(ALLURE_REPORT_DIR, "widgets", "summary.json")
|
||||||
# 读取summary.json中的json数据,并改写reportName
|
# 检查summary.json文件是否存在
|
||||||
with open(title_filepath, 'rb') as f:
|
if not os.path.exists(title_filepath):
|
||||||
# 加载json文件中的内容给params
|
raise FileNotFoundError(f"修改报告名称时,summary.json文件未找到: {title_filepath}")
|
||||||
|
# 读取summary.json中的内容
|
||||||
|
with open(title_filepath, 'r', encoding='utf-8') as f:
|
||||||
params = json.load(f)
|
params = json.load(f)
|
||||||
# 修改内容
|
# 修改报告名称
|
||||||
params['reportName'] = new_name
|
params['reportName'] = new_name
|
||||||
# 往summary.json中,覆盖写入新的json数据
|
# 将修改后的内容写回summary.json
|
||||||
with open(title_filepath, 'w', encoding="utf-8") as f:
|
with open(title_filepath, 'w', encoding='utf-8') as f:
|
||||||
json.dump(params, f, ensure_ascii=False, indent=4)
|
json.dump(params, f, ensure_ascii=False, indent=4)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -129,6 +129,9 @@ class AllureReportBeautiful:
|
||||||
在allure-results报告的根目录下生成一个写入了环境信息的文件:environment.properties(注意:不能放置中文,否则会出现乱码)
|
在allure-results报告的根目录下生成一个写入了环境信息的文件:environment.properties(注意:不能放置中文,否则会出现乱码)
|
||||||
@return:
|
@return:
|
||||||
"""
|
"""
|
||||||
|
# 方法内导入,防止其他文件引用allure_handle文件时引发循环导入问题
|
||||||
|
from common.settings import ENV
|
||||||
|
from configs.env_config import EnvConfig
|
||||||
# 需要写入的环境信息
|
# 需要写入的环境信息
|
||||||
allure_env = {
|
allure_env = {
|
||||||
'OperatingEnvironment': ENV,
|
'OperatingEnvironment': ENV,
|
||||||
|
@ -165,4 +168,4 @@ class AllureReportBeautiful:
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
AllureReportBeautiful.set_report_name('测试报告1234')
|
AllureReportBeautiful.set_report_name('API自动化测试报告')
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
# @File : jenkins_handle.py
|
# @File : jenkins_handle.py
|
||||||
# @project : SensoroApiAutoTest
|
# @project : SensoroApiAutoTest
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
from configs.paths_config import OUT_FILES_DIR
|
||||||
|
from utils.allure_handle import AllureReportBeautiful
|
||||||
|
|
||||||
|
|
||||||
def get_env_from_jenkins(name, base=''):
|
def get_env_from_jenkins(name, base=''):
|
||||||
|
@ -16,3 +20,44 @@ ProjectName = get_env_from_jenkins("JOB_NAME") # Jenkins构建项目名称
|
||||||
BUILD_URL = get_env_from_jenkins("BUILD_URL") # Jenkins构建项目URL
|
BUILD_URL = get_env_from_jenkins("BUILD_URL") # Jenkins构建项目URL
|
||||||
BUILD_NUMBER = get_env_from_jenkins("BUILD_NUMBER") # Jenkins构建编号
|
BUILD_NUMBER = get_env_from_jenkins("BUILD_NUMBER") # Jenkins构建编号
|
||||||
ALLURE_URL = BUILD_URL + 'allure/' # Jenkins构建的allure报告地址
|
ALLURE_URL = BUILD_URL + 'allure/' # Jenkins构建的allure报告地址
|
||||||
|
JENKINS_HOME = get_env_from_jenkins("JENKINS_HOME") # Jenkins的主目录
|
||||||
|
|
||||||
|
|
||||||
|
def change_jenkins_allure_report_name():
|
||||||
|
"""从环境变量中读取报告名称并修改Allure报告名称,此方法只针对Jenkins使用allure插件生成的报告"""
|
||||||
|
try:
|
||||||
|
# 从环境变量中读取报告名称
|
||||||
|
new_name = os.getenv('ALLURE_REPORT_NAME',
|
||||||
|
'Allure Report') # 如果环境变量中没有ALLURE_REPORT_NAME并且未传报告名称参数,默认使用'Allure Report'
|
||||||
|
|
||||||
|
if not new_name:
|
||||||
|
raise ValueError("环境变量'ALLURE_REPORT_NAME'未设置或为空。")
|
||||||
|
|
||||||
|
print(f"使用Allure报告名称: {new_name}")
|
||||||
|
|
||||||
|
# 设置Allure报告名称
|
||||||
|
AllureReportBeautiful.set_report_name(new_name)
|
||||||
|
|
||||||
|
# 保存压缩文件目标路径(压缩文件将移动到这里)
|
||||||
|
zip_path = os.path.join(JENKINS_HOME, 'jobs', ProjectName, 'builds', BUILD_NUMBER, 'archive',
|
||||||
|
'allure-report.zip')
|
||||||
|
|
||||||
|
# 确保压缩文件不存在,如果存在先删除
|
||||||
|
if os.path.exists(zip_path):
|
||||||
|
os.remove(zip_path)
|
||||||
|
print(f"已删除现有zip文件:{zip_path} ")
|
||||||
|
|
||||||
|
# 使用shutil.make_archive压缩整个Allure Report目录并移动到目标目录(OUT_FILES_DIR参数的作用是保留原目录名称)
|
||||||
|
shutil.make_archive(zip_path.replace('.zip', ''), 'zip', OUT_FILES_DIR, 'allure_report')
|
||||||
|
print(f"Allure报告压缩为: {zip_path}")
|
||||||
|
|
||||||
|
# 返回压缩后的文件路径
|
||||||
|
return zip_path
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"错误发生: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
change_jenkins_allure_report_name()
|
||||||
|
|
Loading…
Reference in New Issue