使用Python Pyral为Rally缺陷添加标签:创建时可添加吗?创建后添加报错
在Pyral中创建Rally缺陷时直接添加标签的解决方案
当然可以在创建Rally缺陷的同时直接添加#TestTag2标签!这种方式不仅更高效,还能避免你后续添加标签时遇到的报错问题。下面分两种场景给你具体的实现方案:
一、创建缺陷时直接添加标签
这是最推荐的方式,只需要在你构建的缺陷信息字典中加入Tags字段即可。注意Rally的标签是数组类型,每个元素需要用_Name指定标签名称(Pyral会自动根据名称匹配对应的标签对象;如果标签不存在,部分版本的Pyral会自动创建该标签,具体取决于你的Rally配置)。
修改后的完整代码如下:
info = { "Workspace": "/workspace/123", "Project": "/project/123", "Name": "Test Defect", "Description": "Test Defect details", "Owner": "/user/123", "ScheduleState": "Defined", "Tags": [{"_Name": "#TestTag2"}] # 直接嵌入标签配置 } try: defect = rally.create('Defect', info ) print(f"Rally Defect Opened - {defect.FormattedID}") except Exception as e: print(f"Failed to create defect: {str(e)}")
二、创建缺陷后添加标签(解决报错的正确方式)
如果你一定要在缺陷创建完成后再添加标签,需要确保正确获取标签对象并执行更新操作。之前的报错大概率是因为没有正确引用标签对象,或者更新时的格式不符合Pyral的要求。
正确的实现代码示例:
info = { "Workspace": "/workspace/123", "Project": "/project/123", "Name": "Test Defect", "Description": "Test Defect details", "Owner": "/user/123", "ScheduleState": "Defined", } try: defect = rally.create('Defect', info ) # 先查询获取目标标签对象 tag_query = rally.get('Tag', query='Name = "#TestTag2"', projectScopeDown=False) target_tag = tag_query.next() if tag_query else None if target_tag: # 给缺陷添加标签并更新 defect.addTag(target_tag) rally.update(defect) print(f"Rally Defect Opened - {defect.FormattedID} | Tag added successfully") else: print(f"Tag #TestTag2 not found, please create it first") except Exception as e: print(f"Error: {str(e)}")
常见报错原因排查
- 标签名称拼写错误:确保
#TestTag2的大小写、符号完全匹配Rally中已存在的标签 - 权限问题:检查你的Rally账号是否有创建/修改缺陷标签的权限
- Pyral版本兼容:如果使用的是较旧版本的Pyral,可能需要升级到最新稳定版来避免API兼容问题
内容的提问来源于stack exchange,提问作者Sanjay Bangalore
相关产品推荐
相关产品推荐

