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

Jira story与测试用例自动化关联脚本

title: Jira story与测试用例自动化关联脚本
tags: 
- jira 
categories:
- 学习语录

1. 引言

1.1 背景

在 Jira 项目管理体系下,手动关联 story 与测试用例工作繁琐且易出错,严重影响项目推进效率与数据准确性。为改善这一状况,开发了 Python 脚本,实现特定状态下 story 与测试用例的自动关联,旨在简化流程、降低人为失误,提升项目管理的整体效能。

1.2 目标

本技术文档旨在详细说明该自动关联功能的技术实现、使用方法、维护要点等,帮助技术人员及相关用户理解和运用该功能,确保其在项目中稳定运行。

2. 功能概述

2.1 自动关联机制

脚本能够实时监测 story 主任务状态,当状态转变为 “READY FOR PM” 或者 “已关闭” 等特定状态时,触发自动关联流程。它会依据设定的规则,精准匹配并建立与相关测试用例的关联,无需人工手动操作。

2.2 优势

  • 效率提升:大幅缩短关联 story 与测试用例的时间,让项目团队能将更多精力投入核心业务。

  • 准确性增强:减少人为关联可能产生的错误,保证数据一致性与完整性。

  • 便捷性:为后续的项目追踪、数据分析等工作提供清晰、连贯的数据链路,便于查看与管理。

3. 技术实现

def handle_issue_links(jira_instance, parent_issue_key):
    """
    处理指定主任务的关联链接,根据情况创建新的关联链接
    :param jira_instance: Jira实例
    :param parent_issue_key: 主任务的Key
    """
    if jira_instance is None:
        print("Jira实例未成功创建,请检查登录信息。")
        return
    try:
        parent_issue = jira_instance.issue(parent_issue_key)
        issue_links = parent_issue.fields.issuelinks
        if issue_links:
            print("关联链接信息:")
            has_test_link = False
            for link in issue_links:
                if hasattr(link, 'inwardIssue'):
                    if "is tested by" == link.type.inward:
                        has_test_link = True
                        break
            if not has_test_link:
                print(f"【{parent_issue_key}】没有关联测试用例,进行用例关联")
                jql_query = f"StoryId ~ {parent_issue_key} AND  type  =  测试用例 "
                issues = jira_instance.search_issues(jql_query)
                if issues:
                    for issue in issues:
                        issue_key = issue.key
                        try:
                            jira_instance.create_issue_link("is tested by", parent_issue_key, issue_key)
                            print(f"成功创建关联链接: {parent_issue_key} -> {issue_key}")
                        except JIRAError as e:
                            print(f"创建关联链接时出错: {e}")
                else:
                    print(f"{jql_query},没有找到StoryId为【{parent_issue_key}】的用例,请给对应用例关联storyId")
            else:
                print(f"【{parent_issue_key}】已经关联了用例无需再次关联")
        else:
            print("该Story没有关联链接。")
    except JIRAError as e:
        print(f"处理关联链接时出错: {e}")

3.2 函数逻辑详解

  1. 输入校验:首先判断jira_instance是否有效,若为空则输出错误提示并终止函数执行,确保后续操作基于正确的 Jira 连接。

  2. 获取主任务及关联链接:通过 Jira API 获取指定parent_issue_key对应的主任务及其已有的关联链接信息。

  3. 检查测试用例关联:遍历已有的关联链接,判断是否存在与测试用例的关联(依据链接类型is tested by)。

  4. 无关联时的操作:若未发现与测试用例的关联,构造 JQL 查询语句,查找与主任务相关的测试用例。若找到匹配用例,则逐一创建关联链接;若未找到,则输出提示信息,引导用户检查并关联。

  5. 已有关联时的操作:若已存在与测试用例的关联,直接输出提示,避免重复关联。

  6. 异常处理:在整个操作过程中,捕获可能出现的JIRAError异常,输出详细错误信息,方便定位与解决问题。

4. 安装与部署

4.1 环境要求

  • 操作系统:支持主流操作系统,如 Windows、Linux、macOS。

  • Python 版本:Python 3.6 及以上版本。

  • 依赖库:需安装jira库,可通过pip install jira命令进行安装。

4.2 配置说明

  1. Jira 连接配置:在脚本中需配置 Jira 服务器地址、用户名及密码,确保脚本能够正确连接到 Jira 平台。示例配置如下:
from jira import JIRA

jira_server = "https://your-jira-server-url"
jira_options = {'server': jira_server}
jira = JIRA(options=jira_options, basic_auth=('your-username', 'your-password'))
  1. 脚本部署:将编写好的 Python 脚本放置在合适的服务器环境中,确保脚本运行的用户具有访问 Jira 的权限,且能够执行相关操作。

5. 使用方法

  1. 启动脚本:在配置完成并确保环境正常后,通过命令行或定时任务等方式启动 Python 脚本,使其开始监测 story 主任务状态。

  2. 触发关联:当 story 主任务状态变更为设定的特定状态时,脚本会自动执行关联操作,无需人工干预。

  3. 结果查看:可在 Jira 平台中查看 story 与测试用例的关联结果,确保关联准确无误。若关联过程中出现问题,可查看脚本输出的日志信息进行排查。

6. 维护与故障排除

6.1 日常维护

  1. 定期检查:定期检查脚本运行状态,确保其持续稳定运行。可通过查看脚本日志、检查 Jira 平台中关联数据的准确性等方式进行。

  2. 版本更新:随着 Jira 平台或相关依赖库的更新,及时检查脚本兼容性,必要时进行代码更新与调试,确保功能正常。

6.2 常见故障及解决方法

  1. Jira 连接失败:检查 Jira 服务器地址、用户名、密码是否正确,网络连接是否正常。若服务器地址变更,需及时更新脚本中的配置信息。

  2. 关联错误:若出现关联错误,如关联的测试用例不正确或未成功关联,检查 JQL 查询语句是否准确,确保StoryId等字段与 Jira 项目中的实际配置一致。同时,查看脚本日志中是否有相关错误提示,根据提示进行排查与修复。

  3. 脚本运行异常:若脚本运行过程中出现异常终止,检查 Python 环境是否正常,依赖库是否完整。可通过运行简单的 Python 测试脚本来验证环境状态,若依赖库缺失,重新安装相关依赖库。


本文永久更新地址:

https://www.fenxiangbe.com/p/Jira story与测试用例自动化关联脚本.html


http://www.kler.cn/a/599382.html

相关文章:

  • [已解决]jupyter notebook报错 500 : Internal Server Error及notebook闪退
  • [深度学习]图像分类项目-食物分类
  • 为AI聊天工具添加一个知识系统 之148 设计重审 之13 聚合AI 之2
  • Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)
  • 算法-回溯算法
  • C++ Json-Rpc框架-3项目实现(1)(1.其它函数实现2.消息类型字段定义3.消息Message/通信Muduo抽象具象实现)
  • 深入解析 Vue3 响应式系统:原理、性能优化与应用场景
  • 【例6.6】整数区间(信息学奥赛一本通-1324)
  • 华为OD机试 - 核酸最快检测效率 - 动态规划、背包问题(Java 2024 E卷 200分)
  • ngrep :网络嗅探的利器
  • 使用Python开发自动驾驶技术:车道线检测模型
  • 热门面试题第13天|Leetcode 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数
  • 《深度剖析:BERT与GPT——自然语言处理架构的璀璨双星》
  • 气象可视化卫星云图的方式:方法与架构详解
  • [动态规划 滑动窗口]
  • 基于linuxC结合epoll + TCP 服务器客户端 + 数据库实现一个注册登录功能
  • 穿越之程序员周树人的狂人日记Part5__硅基驯化录
  • 跨数据库定时数据推送实战
  • 我的世界1.20.1forge模组进阶开发教程——Alex‘s mob的深入研究
  • 蓝桥杯 - 简单 - 布局切换