使用脚本同步metersphere开源持续测试平台与jira的工单状态(代码片段)

FIT2CLOUD飞致云 FIT2CLOUD飞致云     2022-12-23     412

关键词:

近期,我司引入了一款开源持续测试平台MeterSphere。基于该持续测试平台中的测试计划和测试用例模块,测试团队初步建立起相关概念,并通过两个方面提高了我司整体的测试水平。首先,团队的测试用例管理模式由线下转移到线上,大大提高了测试用例的复用程度。同时,基于MeterSphere平台管理测试计划也成为测试人员的基本任务之一,通过关联测试用例覆盖测试需求。

由于公司的工单管理系统使用的是Jira,通过Jira工单流转来管理测试人员的工作排期和分发以及上线。所以测试人员需要维护MeterSphere和Jira两个平台的工单状态,且需要手动创建MeterSphere的测试计划。基于节省人力的考虑,针对建立MeterSphere测试计划和测试计划状态维护,我司做了两个脚本用来同步MeterSphere和Jira工单的状态。,现分享给大家。

方案

Step 1:将Jira中状态为“进行中”的工单导入到MeterSphere。实现的方案是向MeterSphere数据库test_plan表中直接插入数据;

Step 2:轮询查询MeterSphere中状态为“未进行”和“进行中”的测试计划。如果发现Jira工单已经关闭,就直接将MeterSphere的测试计划关闭。

开发工具

脚本语言:Python

集成工具:Jenkins

开发过程

Step 1:将Jira中状态为“进行中”的工单同步到MeterSphere测试计划中。

首先,在Jira中查询状态为“进行中”的工单。

jira_option = 
    'server': 'https://jira.xx.com/',
    'verify': False

jiraClinet = JIRA(options=jira_option, basic_auth=('xxxxxx', 'xxxxx')) # 用户名和密码
projects = jiraClinet.projects()
dashboards = jiraClinet.dashboards()
issue_list = jiraClinet.search_issues("project in (LKXD, CSXT, ZQQS, ZLZC) AND issuetype in (线上BUG, 技术优化, 
需求, 子任务, 任务) AND status in (待审核, 待测试, 待上线, 测试中, 'In Progress', 开发中, 排期中, 暂停) AND 测试人员 is not 
EMPTY AND 测试开始时间 is not EMPTY AND 上线时间 is not EMPTY",0,1000)

查询完成后,插入到MeterSpher中的test_plan数据库。

db = pymysql.connect(host="192.168.15.111",port=3307,user="root",passwd="Password123@mysql", charset='utf8',database="metersphere")
cursor = db.cursor(pymysql.cursors.DictCursor)
try:
    selectResultList = cursor.fetchall()
    for i in range(len(selectResultList)):
        for issue in issue_list:
            if issue.key in selectResultList[i]['name']:
                issue_list.remove(issue)
                continue
    for insert_issue in issue_list:
        p = Pinyin()
        creator=p.get_pinyin(u"%s"%(insert_issue.fields.customfield_10203), '')
        if 'CSXT' in insert_issue.key:
            projectId='61f3ed61-a5bf-49c4-b1ab-080a1e6f9068'
        else:
            projectId='a21fc914-6832-4465-8375-8afd329a964b'
        myName=str(insert_issue.key)+str(insert_issue.fields.summary)
        timeArray = time.strptime(insert_issue.fields.customfield_10301, "%Y-%m-%d")
        timeStamp = int(time.mktime(timeArray))*1000
        timeArray1 = time.strptime(insert_issue.fields.customfield_10304, "%Y-%m-%d")
        timeStamp1 = int(time.mktime(timeArray1))*1000
        sql = """INSERT INTO test_plan (id,workspace_id,report_id,NAME,description,STATUS,stage,principal,test_case_match_rule,executor_match_rule,tags,create_time,update_time,planned_start_time,planned_end_time,actual_start_time,actual_end_time,creator,project_id,execution_times)
            VALUE('%s','0b0700e9-7c18-11eb-a6a1-0242ac120003','','%s','','Prepare','smoke','%s','','','["%s"]','%s','%s','%s','%s','%s','%s','%s','%s',0)"""% (random.randint(10001, 9999999),myName,creator,insert_issue.fields.customfield_10201,int(round(time.time() * 1000)),int(round(time.time() * 1000)),timeStamp,timeStamp1,timeStamp,timeStamp1,creator,projectId)
        print(sql)
        cursor.execute(sql)
        db.commit()
except Exception as err:
    print("error >>> " , err )
    db.rollback()
db.close()

至此,将Jira中状态为“进行中”的工单同步到Metersphere测试计划的工作就完成了。

Step 2:将Jira中已关闭的工单同步到MeterSphere测试计划中。

查询过去24小时内状态标记为“已完成”的jira工单。

def jirainfo():
    a = datetime.datetime.now()
    time = a + datetime.timedelta(days = -1)
    time = time.strftime("%Y-%m-%d")
    jira_option = 
        'server': 'https://jira.zz.com/',
        'verify': False
    
    jiraClinet = JIRA(options=jira_option, basic_auth=('zhaochuanhui', '1qaz!QAZ'))
    re=("project in (LKXD, CSXT, ZQQS, ZLZC) AND issuetype in (线上BUG, 技术优化, 需求, 子任务, 任务) AND status in (完成) AND 测试人员 is not EMPTY AND 测试开始时间 is not EMPTY AND 上线时间 is not EMPTY AND updated >= %s")%(time)
    issue_list = jiraClinet.search_issues(re, 1, 1000)
    return issue_list

在MeterSphere的test_plan中查询未进行或者进行中的测试计划,并将其中在Jira中标记为“已完成”的计划的状态改为“已完成”。

try:
    for issue in jirainfo():
        sql = "SELECT * FROM test_plan WHERE name like '%" + issue.key + "%'"
        selectResultList = sqlInfo(1, sql)
        if selectResultList > 0:
            sql = ("UPDATE test_plan SET status = 'Completed' WHERE name like '%"+issue.key+"%'")
            print(sql)
            result = sqlInfo(2, sql)
            continue
except Exception as err:
    print("error >>> ", err)

集成Jenkins

  1. 下载代码

  1. 配置定时任务Build Triggers,设定为每天晚上12点执行。

  1. 执行脚本

效果展示

日常研发排期中状态为“进行中”的Jira工单。

同步后的MeterSphere测试计划,以下测试计划都是通过脚本自动创建的。

如果Jira工单关闭,那么Jenkins定时任务会发出脚本,关闭MeterSphere中对应的测试计划。

到这里,Jenkins定时任务创建完毕,小功告成。

————————————————
版权声明:本文为博客园博主「奔跑中的wiggins」的原创文章。

原文链接:

https://www.cnblogs.com/wiggins/p/15078801.html

关于MeterSphere

MeterSphere是FIT2CLOUD飞致云旗下品牌。作为一款一站式的开源持续测试平台( github.com/metersphere ),MeterSphere涵盖测试跟踪、接口测试、性能测试、 团队协作等功能,全面兼容JMeter、Postman、Swagger等开源标准,有效助力开发和测试团队充分利用云的弹性进行高度可扩展的自动化测试,加速高质量的软件交付。

自2020年6月发布至今,MeterSphere开源项目得到了开源社区的广泛认可和积极反馈,并已经在众多企业内落地使用。截至2021年7月,MeterSphere项目在代码托管平台GitHub上获得了超过5,000个Star和50,000次以上的独立下载。

ui自动化测试模块与环境管理全面打通,metersphere开源持续测试平台v2.6.0发布

2023年1月16日,MeterSphere一站式开源持续测试平台正式发布v2.6.0版本。在这一版本中,MeterSphere的UI自动化测试模块与环境管理全面打通,更好地满足了用户一个脚本同时跑多个环境的测试需求。在测试跟踪模块中,... 查看详情

新起点丨metersphere开源持续测试平台v2.0发布

2022年8月1日,MeterSphere一站式开源持续测试平台正式发布v2.0版本。在经历了近三个月的v1.20LTS版本迭代后,MeterSphere的系统稳定性与可用性得到进一步提升,在8月正式迎来全新的v2.0版本。在这一版本中,MeterSphere... 查看详情

架构演进丨metersphere开源持续测试平台v2.3升级至微服务架构

2022年10月31日,MeterSphere一站式开源持续测试平台正式发布v2.3版本。在这一版本中,MeterSphere开源项目完成了一次重要的蜕变,正式从单体应用架构升级至微服务架构。从创立之初,MeterSphere项目就将自身定位为“... 查看详情

新增ui测试模块,metersphere一站式开源持续测试平台发布v1.20lts版本

2022年5月5日,MeterSphere一站式开源持续测试平台正式发布v1.20LTS版本。这是继2021年5月发布v1.10LTS版本后,MeterSphere开源项目发布的第二个LTS(LongTermSupport)版本。MeterSphere开源项目组将对MeterSpherev1.20LTS版本用户提供... 查看详情

模块首页ux交互升级,接口测试支持禁用本地执行,metersphere开源持续测试平台v2.4.0发布

2022年11月28日,MeterSphere一站式开源持续测试平台正式发布v2.4.0版本。在这一版本中,MeterSphere在测试跟踪和接口测试模块中对首页进行了UX交互升级,将部分指标进行了饼图、柱状图的展示优化,同时根据社区用... 查看详情

文件管理功能重构,metersphere开源持续测试平台v2.1.0发布

2022年8月29日,MeterSphere一站式开源持续测试平台正式发布v2.1.0版本。在这一版本中,MeterSphere的UI测试模块对鼠标指令进一步扩展,实现了绘图核心场景的覆盖;在测试跟踪模块中,对功能用例模板进行了优化&... 查看详情

增加项目报告功能,支持与tapdjira禅道双向同步缺陷,metersphere开源持续测试平台v1.15.0发布

11月25日,MeterSphere一站式开源持续测试平台正式发布v1.15.0版本。在这一版本中,我们新增了项目报告(X-Pack),用户可以自由组合已有报表创建报告,并通过邮件方式发送给指定用户;缺陷管理方面&#x... 查看详情

支持tcp协议mock服务,metersphere开源持续测试平台v1.12.0发布

8月26日,MeterSphere一站式开源持续测试平台正式发布v1.12.0版本。在这一版本中我们新增了消息中心功能,并支持对更多事件类型进行通知;测试跟踪中的测试计划报告进行了整体优化,可以更加完整、直观地展现... 查看详情

增加任务中心,优化性能测试指标展示方式,metersphere开源持续测试平台v1.11.0发布

7月22日,MeterSphere一站式开源持续测试平台正式发布v1.11.0版本。在这一版本中我们新增了全局性的任务中心功能,执行中的接口、性能测试均会出现在任务中心当中;同时针对性能测试用户提交较多的报告展示问题&#x... 查看详情

metersphere体验

1.简介MeterSphere是一站式开源持续测试平台,涵盖测试跟踪、接口测试、性能测试、团队协作等功能,兼容JMeter等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量软件... 查看详情

接口测试支持自定义模板,ui测试支持自定义组合指令,metersphere开源持续测试平台v2.2.0发布

2022年9月26日,MeterSphere一站式开源持续测试平台正式发布v2.2.0版本。在这一版本中,MeterSphere在接口测试模块中,接口定义支持自定义模板,用户可以在模板中添加自定义字段,以满足不同研发团队在接口管理... 查看详情

接口测试支持自定义模板,ui测试支持自定义组合指令,metersphere开源持续测试平台v2.2.0发布

2022年9月26日,MeterSphere一站式开源持续测试平台正式发布v2.2.0版本。在这一版本中,MeterSphere在接口测试模块中,接口定义支持自定义模板,用户可以在模板中添加自定义字段,以满足不同研发团队在接口管理... 查看详情

新增我的工作台功能,简化管理模型,metersphere开源持续测试平台v1.14.0发布

10月28日,MeterSphere一站式开源持续测试平台正式发布v1.14.0版本。在这一版本中我们新增了“我的工作台”功能(X-Pack)。当前工作空间下,与登录账号所属人相关的内容都会展示在我的工作台中。同时,对于... 查看详情

ui自动化测试模块与环境管理全面打通,metersphere开源持续测试平台v2.6.0发布

2023年1月16日,MeterSphere一站式开源持续测试平台正式发布v2.6.0版本。在这一版本中,MeterSphere的UI自动化测试模块与环境管理全面打通,更好地满足了用户一个脚本同时跑多个环境的测试需求。在测试跟踪模块中,... 查看详情

案例分享|中国移动上研院基于metersphere开源持续测试平台构建规范化测试体系

中移(上海)信息通信科技有限公司(又称中国移动(上海)产业研究院,简称“上研院”)是中国移动通信集团有限公司出资20亿组建的全资子公司,是中国移动面向5G和人工智能,引领工业... 查看详情

metersphere开源持续测试平台携手柠檬班,为提升软件测试行业整体效率添砖加瓦

...式。未来,双方将以FIT2CLOUD飞致云旗下知名开源项目MeterSphere一站式开源持续测试平台为切入点,为软件测试工程师积极拓展行业新机遇。MeterSphere是一款一站式的开源持续测试平台,涵盖测试跟踪、接口测试、性能... 查看详情

开源版支持工作台展示,新增超级管理员用户组,metersphere开源持续测试平台v2.5.0发布

2022年12月27日,MeterSphere一站式开源持续测试平台正式发布v2.5.0版本。在这一版本中,MeterSphere在工作台模块进行了UX交互升级,并将工作台模块由X-Pack增强功能开放为开源版功能。在测试跟踪模块中,关联测试用... 查看详情

测试跟踪模块ux交互升级,多个x-pack功能开放至开源版,metersphere开源持续测试平台v2.7.0发布

2023年2月24日,MeterSphere一站式开源持续测试平台正式发布v2.7.0版本。在这一版本中,MeterSphere在测试跟踪模块进行了UX交互升级,整个页面采用轻量化设计进行整体降噪,页面信息更加清晰易懂,操作流程更顺... 查看详情