此脚本可以连接Jira,通过Jira的token,Jira对象可以实现与Jira的交互,
从而完成jira与pytest的交互,或者其他自动化测试框架也行,
例如: 将pytest运行结果推送jira;将jira用例与自动化测试用例建立映射关系,将功能用例对应的自动化测试用例脚本路径推送到功能用例的描述栏,或者自动化栏 里面
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2025-02-12 10:05
# @Author : duxiaowei
# @File : connect_jira.py
# @Software: 此文件包括:连接jira的类;生成html报告上传jira的方法;监控当前环境是否还有python程序运行的方法
import os
import time
from datetime import datetime
import psutil
import requests
from jira import JIRA
from com.common import read_yml
class ConnJira:
"""连接jira,
Returns:
cookie,ip_port,jira对象
"""
def __init__(self):
jira = read_yml("env.yml")["sit"]["jira"]
self.jira_server = jira["jira_server"]
self.jira_username = jira["jira_username"]
self.jira_password = jira["jira_password"]
def jira_login(self):
"""登录,获取权限
Returns:
cookie,ip_port,jira对象
"""
try:
# 创建一个 requests 会话对象
session = requests.Session()
jira = JIRA(server=self.jira_server, basic_auth=(self.jira_username, self.jira_password),
options={'session': session})
# 创建一个自定义的会话对象并进行认证
session.auth = (self.jira_username, self.jira_password)
response = session.get(f'{self.jira_server}/projects/O45/summary')
response.raise_for_status()
# 提取 Cookie 信息
cookie = response.headers['Set-Cookie'].split(';')[0] + ';' + \
response.headers['Set-Cookie'].split(';')[2].split(',')[1]
# print(cookie)
return cookie, self.jira_server, jira
except requests.RequestException as req_ex:
# 处理网络请求异常
print(f"网络请求出错,未成功连接到jira!: {req_ex}")
except Exception as ex:
# 处理其他异常
print(f"发生未知错误,未成功连接到jira! : {ex}")
return None, None
# if __name__ == "__main__":
# # jira_server = "http://10.1.20.64:8123"
# # jira_username = 'duxiaowei12345678'
# # jira_password = '123!123!123!123!'
#
# conn = ConnJira()
# cookie, jira_server, jira = conn.jira_login()
# if cookie and jira:
# print(cookie)
# print(jira_server)
# print("成功获取 Cookie 和 Jira 对象")
# else:
# print("登录失败")