使用Xray Python模块在Jira创建TEST issue的技术咨询
Xray Python模块操作Jira TEST类型Issue问题解答
问题1:如何读取HTML文件,通过Xray Python模块在Jira的TEST类型issue中创建测试步骤?
实现流程分3步,直接参考下方可运行代码调整即可:
- 先安装依赖包:
pip install xray beautifulsoup4 lxml - 核心逻辑是先解析HTML提取结构化测试步骤,再按Xray要求的字段格式组装载荷调用创建接口
from bs4 import BeautifulSoup from xray import Xray # 读取本地HTML测试步骤文件 with open("你的测试步骤文件.html", "r", encoding="utf-8") as f: raw_html = f.read() soup = BeautifulSoup(raw_html, "lxml") # 按自身HTML的结构提取步骤,以下示例适配HTML中用id为step-table的表格存储步骤的场景 # 表格列顺序为:步骤操作、预期结果、测试数据 parsed_steps = [] step_table = soup.find("table", id="step-table") for row in step_table.find_all("tr")[1:]: # 跳过表头行 cells = [cell.decode_contents() if cell else "" for cell in row.find_all("td")] parsed_steps.append({ "action": cells[0], "result": cells[1], "data": cells[2] if len(cells)>=3 else "" }) # 初始化Xray客户端,替换为自身环境的配置信息 xray_client = Xray( base_url="https://你的Jira实例访问地址", client_id="Xray API认证用Client ID", client_secret="Xray API认证用Client Secret" ) # 组装创建TEST类型Issue的请求载荷 # 注意customfield_xxxxx需要替换为你当前Jira实例中Xray测试步骤对应的自定义字段ID,可通过Jira字段查询接口获取 create_payload = { "fields": { "project": {"key": "所属项目的KEY"}, "summary": "测试用例的标题", "issuetype": {"name": "Test"}, "customfield_xxxxx": { "steps": [ { "fields": { "action": step["action"], "result": step["result"], "data": step["data"] } } for step in parsed_steps ] } } } # 发起创建请求 resp = xray_client.create_issue(create_payload) print(f"测试用例创建成功,对应Issue Key为:{resp['key']}")
注意:如果需要保留步骤里的富文本格式(粗体、列表、链接等),提取内容时不要用
get_text()方法,直接取元素的decode_contents()返回值即可,Xray原生支持HTML格式的富文本步骤内容。如果你的HTML不是用表格存储步骤,自行调整BeautifulSoup的元素定位规则,匹配到每个步骤的操作、预期结果节点即可。
问题2:使用Xray Python模块创建TEST类型issue时,是否需要预先将HTML文件转换为JSON文件?
不需要做全文件格式转换,也不需要提前生成落盘的JSON中间文件。
Xray的接口确实要求传入JSON格式的请求载荷,但这个结构只需要在代码运行时,把从HTML中解析提取到的结构化步骤数据,按接口要求的字段格式组装成Python字典即可,Xray的Python SDK会自动完成字典到JSON的序列化转换。
如果你的工作流需要给其他系统复用解析后的步骤数据,可以选择把提取结果保存为JSON文件,但这属于可选操作,不是调用Xray模块的强制要求。
避坑提示:不要直接把原始HTML文件的全量内容直接塞到测试步骤字段中,会出现格式错乱、内容丢失的问题,必须先做结构化提取再组装载荷。
内容的提问来源于stack exchange,提问作者Oshin aggrawal
相关产品推荐
相关产品推荐

