【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
);