python一句做网站,鉴定手表网站,wordpress识别pc手机版,中专网站建设与数据管理是什么title: Jira用例自动去除summary重复用例
tags:
- jira
- python
categories:
- python一、背景与需求二、解决方案思路三、实施步骤本文永久更新地址: 在使用 Jira 进行项目管理时#xff0c;测试用例的维护至关重要。随着项目推进#xff0c;用例数量增多#xff0c;可能…title: Jira用例自动去除summary重复用例
tags:
- jira
- python
categories:
- python一、背景与需求二、解决方案思路三、实施步骤本文永久更新地址: 在使用 Jira 进行项目管理时测试用例的维护至关重要。随着项目推进用例数量增多可能会出现 summary 重复的情况手动排查费时费力因此实现自动去除重复用例功能意义重大。
一、背景与需求
项目团队在 Jira 中积累了大量测试用例由于多人协作、版本迭代等因素一些用例的 summary 表述相近甚至完全相同这不仅造成视觉混乱还可能导致测试覆盖不精准、资源浪费。我们迫切需要一个自动化机制能够快速识别并清理这些重复项确保用例库的简洁与高效。
二、解决方案思路 数据获取利用 Jira API 连接到项目实例获取所有测试用例的详细信息重点提取 summary 字段及对应的用例 ID 等关键数据以便后续比对操作。 重复判断算法采用文本相似度算法当两个用例 summary 的相似度高于阈值时标记为潜在重复项。考虑到部分特殊字符、空格差异不影响语义实质在比对前可进行规范化预处理如统一转小写、去除多余空格等。 自动处理流程对于标记的重复用例根据预先设定规则如保留创建时间最早或最后更新的用例通过 API 发起删除操作将其他重复版本从 Jira 中移除。
三、实施步骤
开发环境搭建选择合适编程语言如 Python安装 Jira API 相关库配置好连接 Jira 服务器所需认证信息确保能顺利访问数据。
python
def login():# Jira服务器地址用户名和密码jira_server https://jira.xxx.comjira_user xxxjira_password xxx# 创建Jira实例并登录try:jira_instance JIRA(serverjira_server, basic_auth(jira_user, jira_password))print(Logged in successfully.)except JIRAError as e:print(fFailed to log in to Jira: {e})return jira_instance代码编写与调试按照数据获取、相似度计算、重复处理逻辑逐步编写代码在测试环境中使用部分样本用例数据进行调试不断优化算法阈值确保准确识别重复且无误删风险。 python def search(jira_instance,jql_query,i):try:issues jira_instance.search_issues(jql_query,maxResultsNone)flag 1counterDict {}for issue in range(0,len(issues)):if i.strip() issues[issue].fields.summary.strip():counterDict[issues[issue].key]issues[issue].fields.status.nameelse:print(f{i} {issues[issue].fields.summary}跳过废弃操作)failSummaryList.append(issues[issue].fields.summary)for item ,status in counterDict.items():if statusUI自动化 or status接口自动化:flag 0print(重复已自动化的用例item)continueelse:if flag 1:#print(i.strip()issues[issue].fields.summary,flag)flag 0continueelse:jira_instance.transition_issue(issues[issue].key, xxx)#改变用例的状态需要先找到目标状态的transition IDprint(fIssue Key: {issues[issue].key}, Summary: {issues[issue].fields.summary},PASS)print()except JIRAError as e:print(fError searching issues: {e})def getSummary(jira_instance,jql_query): summaryList[] try: issues1 jira_instance.search_issues(jql_query,maxResultsNone) #issues1 jira_instance.search_issues(jql_query) for issue in issues1: summaryList.append(issue.fields.summary)except JIRAError as e:print(f获取summary失败: {e})counterkeep_duplicates(summaryList)print(counter)summaryListlist(set(counter))return summaryListdef keep_duplicates(lst): counter Counter(lst) return [item for item in lst if counter[item] 1 ] 部署与监控将代码部署到jenkins设置定时任务定期运行去重程序 jira_instancelogin()#获取第一个参数first_argument sys.argv[1]client sys.argv[2]falg sys.argv[3]query first_argument clientprint(查询条件是query)file_infos getSummary(jira_instance,query)if falg 1:print(重复的用例是, file_infos)for i in file_infos:file_info re.sub(r[\x00-\xff], , i)jql_query first_argumentclient AND summary ~{0}.format(file_info)# print(jql_query)search(jira_instance,jql_query,i)else:print(已查出重复的用例是, file_infos)python
#改变用例的状态需要先找到目标状态的transition ID # transitions jira_instance.transitions(bug_id) # print(transitions) # for transition in transitions: # print(fID: {transition[id]}, Name: {transition[name]}) 本文永久更新地址:
https://www.fenxiangbe.com/p/Jira用例自动去除summary重复用例.html