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

手机h5建网站百度收录入口在哪里

手机h5建网站,百度收录入口在哪里,免费自助建站系统下载,侗族网站建设title: 基于 Jenkins 的测试报告获取与处理并写入 Jira Wiki 的技术总结 tags: - jenkins - python categories: - jenkins在软件开发的持续集成与持续交付(CI/CD)流程里,及时、准确地获取并分析测试报告对保障软件质量至关重要。本文将详细…
title: 基于 Jenkins 的测试报告获取与处理并写入 Jira Wiki 的技术总结
tags: 
- jenkins
- python
categories:
- jenkins

在软件开发的持续集成与持续交付(CI/CD)流程里,及时、准确地获取并分析测试报告对保障软件质量至关重要。本文将详细阐述如何借助 Jenkins 搭建自动化系统,实现批量触发测试任务、获取测试报告关键信息并写入 Jira Wiki 的全流程自动化,为技术同行提供技术参考与实践经验。

一、功能实现概述

批量任务触发与结果等待

借助jenkins库,通过run_jenkins_task函数实现批量触发 Jenkins 测试自动化任务。关键代码如下:

import asyncioasync def run_jenkins_task(env,testNG_job_name_dict,sosotest_job_name_dict,robot_job_name_dict):job_names = testNG_job_name_dict.get(env, [])testNG_results, sosotest_results, robot_results = await asyncio.gather(*[trigger_and_get_result(server, job_name) for job_name in job_names],* [trigger_and_get_result(sosotest_server, job_name, sosotest_params) for job_name,sosotest_params in sosotest_job_name_dict.items()],*[trigger_and_get_result(sosotest_server, job_name, sosotest_params) for job_name,sosotest_params in robot_job_name_dict.items()],return_exceptions=True)return testNG_results, sosotest_results, robot_results

该函数根据不同环境(如gray、cd等)和任务类型(testNG、sosotest、robot),批量触发对应的 Jenkins 任务。利用asyncio.gather并发执行任务,极大提高了执行效率。执行过程中,程序会等待所有任务完成,获取每个任务的执行结果,确保后续处理基于完整的任务数据 。

测试报告关键信息提取

针对testNG、sosotest和robot三种不同类型的测试报告,分别编写get_testNG_report、get_sosotest_report和get_robot_report函数,运用正则表达式提取关键信息。以get_testNG_report函数为例:

import re
import requestsdef get_testNG_report(testReport_url):report_info={}report_info['testReport_url'] = testReport_urltry:res = requests.get(testReport_url)if res.status_code == 200:failures_pattern = r'(\d+) failures'failures_match = re.search(failures_pattern, res.text)if failures_match:failures = int(failures_match.group(1))else:failures = 0tests_pattern = r'(\d+) tests'tests_match = re.search(tests_pattern, res.text)if tests_match:tests = int(tests_match.group(1))else:tests = 0success_num = tests - failuresif tests!= 0:success_rate = "{:.2%}".format(success_num / tests)report_info['success_rate'] = success_ratereport_info['success_num'] = success_numreport_info['failures'] = failuresreport_info['tests'] = testselse:print(f"请求失败,状态码: {res.status_code}")except requests.RequestException as e:print(f"请求时发生异常: {e}")return report_info

此函数通过requests库获取测试报告页面内容,然后使用正则表达式匹配(\d+) failures和(\d+) tests,分别提取失败次数和测试总次数,进而计算成功次数和成功率。针对不同类型报告,通过调整正则表达式,精准提取出报告执行数、成功率、失败数等关键信息。

信息组装与 Jira Wiki 写入

利用assembly_content函数将提取的关键信息组装成特定格式的 HTML 表格内容,再通过与 Jira API 交互的函数将其写入 Jira Wiki。assembly_content函数核心代码如下:

def assembly_content(content_list):content_header = f'''<table class=\"wrapped confluenceTable\" style=\"width: 2093.0px;\"><!-- 省略表格头部详细定义 --></tr>'''content_body = ""for value in content_list:content_body += f'''<tr><td class=\"confluenceTd\" style=\"width: 208.0px;\" rowspan=\"3\">{value['functional_domain']}</td>'''for key1, value1 in value.items():if key1 == "functional_domain":continuevalue1 = {} if value1 is None else value1# 构建表格行内容content_body += f'''<td class=\"confluenceTd\" style=\"width: 171.0px;\">{key1}</td><td class=\"confluenceTd\" style=\"width: 125.0px;\">{value1.get("tests")}</td><!-- 省略其他列内容构建 --><td class=\"confluenceTd\" style=\"width: 766.0px;\"><a href=\"{value1.get('testReport_url')}">{value1.get('testReport_url')}</a></td></tr><tr>'''content_body += f'''</tr>'''content_fooder = f''' </tbody></table>'''content = content_header + content_body + content_fooderreturn content

该函数将不同任务的测试报告关键信息,按照功能域和报告类型进行整理,生成对应的 HTML 表格行。最终将这些行组合成完整的表格内容,其中包含报告执行数、成功率、失败数以及报告链接等信息。在写入 Jira Wiki 时,需要根据 Jira 对内容格式的要求,对生成的 HTML 内容进行适当转义和调整 ,确保顺利写入。

二、经验总结

异步并发提升效率

使用asyncio库实现异步操作,通过asyncio.gather并发触发和等待多个测试任务,极大减少了整体任务执行时间。在处理大量测试任务时,避免了顺序执行带来的时间浪费,提升了测试效率,加快了反馈周期,有助于开发团队及时根据测试结果调整开发方向。

正则表达式精准提取

在报告解析中,正则表达式能针对不同结构的测试报告,精准提取关键信息。通过为不同报告类型编写专门的正则表达式模式,能够快速、准确地获取报告执行数、成功率、失败数等数据。不过,由于测试框架版本变化可能导致报告格式改变,需要建立正则表达式库,对解析模式进行统一管理,以便及时调整适配。

模块化设计增强维护性

代码采用模块化设计,每个函数负责独立功能,如任务触发、报告解析、内容组装等。这使得代码结构清晰,可读性和可维护性大大提高。当需要修改或扩展功能时,仅需关注对应的模块,减少了对整体代码的影响。在团队协作开发中,模块化设计有助于提高开发效率,降低沟通成本,提升代码质量。

可扩展性保障系统长期可用

系统具备良好的可扩展性。对于新的测试类型或报告格式,只需添加新的报告解析函数和相应映射关系,就能集成到现有系统。例如,未来引入新测试框架,按照现有模式编写解析函数并配置映射,即可实现对新报告的处理,保障系统能适应不断变化的测试需求。

三、改进方向探讨

强化错误处理机制

目前部分函数对异常仅做简单打印输出,在实际生产环境中远远不够。应使用logging模块记录详细日志,方便后续排查问题;针对不同异常类型,制定更合理的抛出与恢复策略,确保系统稳定可靠。与 Jira Wiki 交互时,针对网络异常、权限不足等问题,增加重试机制、优化权限管理,保障数据顺利写入。

消除代码冗余

run_jenkins_task函数中触发不同类型任务的代码存在重复。可将触发任务的公共部分封装成独立函数,减少代码冗余,使代码结构更清晰,降低维护成本,便于统一修改和优化触发任务的逻辑。


本文永久更新地址:

https://www.fenxiangbe.com/p/基于 Jenkins 的测试报告获取与处理并写入 Jira Wiki 的技术总结.html

http://www.hotlads.com/news/4092.html

相关文章:

  • 杭州市建设委员会官方网站店铺引流的30种方法
  • 温州营销网站制作联系电话b站推广形式
  • 无锡企业网站制作策划在百度上怎么发布广告
  • wordpress 商城模版一键优化下载安装
  • 春暖花开 wordpress主题单页应用seo如何解决
  • 广州的房地产网站建设新河seo怎么做整站排名
  • 做资讯网站需要哪些资质广告主平台
  • 天津建设工程交易中心网站站长工具seo综合查询工具
  • 可以做超大海报的网站百度竞价推广屏蔽软件
  • 网页显示站点不安全宁波seo托管公司
  • 建设部人事教育司网站一个新品牌怎样营销推广
  • 青岛做网站的费用线上销售怎么做推广
  • 电子政务网站建设背景网站定制的公司
  • 清河网站建设价格网上营销是干什么的
  • 网站推广设计做哪些网站优化推广seo公司
  • 建设工程施工合同司法解释2021搜索引擎优化宝典
  • 泰安可靠的网站建设近两年网络营销成功案例
  • 家政服务公司网站建设方案策划书促销式软文案例
  • 徐州做网站费用营销推广方案
  • 网站开发专业的领军人物百度查重工具
  • vs进行网站建设百度推广竞价是什么意思
  • 建立网站后台谷歌优化方法
  • 网站的优势与不足企业qq一年多少费用
  • 南通网站建设优化公司外链推广论坛
  • z-blog跟wordpress很像无忧seo博客
  • 网站建设模板研究seo优化技术培训中心
  • 有哪些做任务的网站平台网站建设推广服务
  • 网站怎么做搜索关键词优化外包服务
  • 无人机东莞网站建设制作网站要花多少钱
  • 聊城做网站的公司教程分享几个x站好用的关键词