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

【python】向Jira测试计划下,附件中增加html测试报告

【python】连接Jira获取token以及jira对象

# 往 jira 测试计划下面,上传测试结果html
def put_jira_file(plain_id):
    # 配置连接jira
    conn = ConnJira()
    jira = conn.jira_login()[2]
    path = jira.issue('O45-' + plain_id)
    attachments_dir = os.path.abspath('..') + '\\test_API\\reports'

    # 遍历目录下所有文件并上传
    for filename in os.listdir(attachments_dir):
        if filename.startswith('.'):
            continue  # 忽略隐藏文件

        file_rule = plain_id + '.html'
        if filename.endswith(file_rule):
            file_path = os.path.join(attachments_dir, filename)
            if os.path.isfile(file_path):
                with open(file_path, 'rb') as file:
                    # 上传附件
                    jira.add_attachment(issue=path, attachment=file, filename=filename)
                    print(f'Attachment {filename} uploaded successfully.')

python 向jira测试用例下,自动化栏,写入自动化测试脚本路径

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2025-02-10 14:15
# @Author  : duxiaowei
# @File    : put_filename_jira.py
# @Software: 这个文件是 : 往jira用例中,添加自动化脚本路径的
#             路径都添加到对应的 jira 号下面的,自动化一栏中


from urllib.parse import urlencode

import requests

from com.connect_jira import ConnJira
from com.connect_mysql import DBmysql
from com.connect_sqllite import DBlite

from com.get_filename import insert_pytest_ready

# 配置连接jira
conn = ConnJira()
cookie, jira_server, jira = conn.jira_login()

"""
automationIdentifier: 自动化备注信息,需要写入,自动化脚本文件路径
tcIssueId: 数据库查出来对应的 jiraissue 中 ID
"""


def put_自动化备注(automationIdentifier, tcIssueId):
    url = jira_server + "/rest/synapse/1.0/testCase/saveAutomationTestIdentifier"
    params = {
        "automationIdentifier": automationIdentifier,
        "tcIssueId": tcIssueId
    }
    payload = {}
    headers = {'Cookie': cookie}
    full_url = url + '?' + urlencode(params)
    # print(full_url)
    response = requests.request("PUT", full_url, headers=headers, data=payload)
    if response.status_code == 200:
        print("推送成功!自动化测试文件推送到对应用例编号下")
    else:
        print("推送失败!自动化测试文件名称,推送失败!")


# 查询mysql数据库,找到对应jiraissue,表中ID,用于传参
def get_jiraissue_ID(issueID):
    select_query = "select ID from jira.jiraissue where issuenum=%s"
    arg = []
    arg.append(issueID)
    try:
        result_mysql = DBmysql().select(select_query, arg)
        return str(result_mysql[0][0])
    except Exception:
        return ""


# 这两个字段,来自sqllite数据库
# issueID = "6050"
# name = ':test_API:testcases:场外:O45_6060&6061&6062_IB_bond_buy_shougong_test.py'
def jira_remark():
    ready_result = DBlite().select(
        "select filename,jira_num,number from pytest_ready where jira_num !='' order by updatetime desc")
    for i in ready_result:
        # 文件名替换字符串
        content = i[0].replace('\\', ':')
        content = content.replace('&', ':')
        print(content)
        issueID = i[1]
        number = i[2]
        # 通过sqllite数据库中,issueID,去查询mysql对应的issue表ID列
        mysql_id = get_jiraissue_ID(issueID)
        # print(mysql_id)
        if mysql_id != "":
            # 推送到,自动化备注
            put_自动化备注(content, mysql_id)
            # 记录推送次数
            sql_update = "update pytest_ready set number=? where jira_num=?"
            number = number + 1
            arg = (number, issueID)
            DBlite().change(sql_update, arg)

# # 需要将jira_remark()放到conftest中,目前每次都会去put一遍,number字段,用于推送记录次数,推送之前最好,拉一下pytest文件到数据
# # 如果一个 jira号下有两个脚本文件,只记录,第一次的那个,这块还需要优化
# insert_pytest_ready()
# jira_remark()

涉及到一个表pytest_ready

create table pytest_ready
(
	id INTEGER
		primary key autoincrement,
	filename VARCHAR(100),
	jira_num VARCHAR(20),
	updatetime TIMESTAMP,
	createtime TIMESTAMP,
	number INTEGER default 0
);

在这里插入图片描述


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

相关文章:

  • ROS学习
  • 全国哪些考研机构比较好?
  • 笔试-士兵过河
  • 【计算机视觉】文本识别
  • SpringBoot实战:高效获取视频资源
  • 高频 SQL 50 题(基础版)
  • PMTUD By UDP
  • C++自研游戏引擎-碰撞检测组件-八叉树AABB检测算法实现
  • 无人机常见的开源飞控项目
  • MySQL安装MySQL服务时提示Install-Remove of the Service Denied
  • 数论补充 之 前后缀分解问题
  • 编程技巧:VUE 实现接口返回数据的流式处理
  • FPGA实现SDI视频缩放转GTY光口传输,基于GS2971+Aurora 8b/10b编解码架构,提供工程源码和技术支持
  • 网络安全 | 网络攻击介绍
  • 【项目日记(五)】第二层: 中心缓存的具体实现
  • 释放你的元数据:使用 Elasticsearch 的自查询检索器
  • 大中型企业专用数据安全系统 | 天锐蓝盾终端安全 数据安全
  • 深入理解DOM:22个核心知识点与代码示例
  • ‌CBA认证‌(业务架构师认证)简介---适用人群、考试内容与形式、含金量与职业前景,以及‌CBA、TOGAF认证对比表格
  • Vulnhub靶机渗透-DC5