如何使用Azure DevOps Python API实现用户故事查询、创建及状态修改?
提示:日常开发请务必使用版本控制工具,避免本地文件误删导致代码资产损失。
Azure DevOps User Story 操作实现示例
首先安装依赖包:
pip install azure-devops
通用客户端初始化
from azure.devops.connection import Connection from msrest.authentication import BasicAuthentication from azure.devops.v6_0.work_item_tracking.models import JsonPatchOperation # 配置认证信息 m_token = "你的个人访问令牌" m_url = 'https://dev.azure.com/logistics/' m_project = "Manyport" m_cred = BasicAuthentication('', m_token) # 建立连接并获取工作项跟踪客户端 m_conn = Connection(base_url=m_url, creds=m_cred) wit_client = m_conn.clients.get_work_item_tracking_client()
1. 创建带标签的User Story
# 构造工作项字段更新操作 patch_operations = [ # 设置标题 JsonPatchOperation( op="add", path="/fields/System.Title", value="测试User Story标题" ), # 设置描述 JsonPatchOperation( op="add", path="/fields/System.Description", value="这是User Story的描述内容" ), # 设置标签,多个标签用分号分隔 JsonPatchOperation( op="add", path="/fields/System.Tags", value="前端;需求;待排期" ) ] # 创建User Story,工作项类型名称根据项目实际配置调整,一般是"User Story" user_story = wit_client.create_work_item( document=patch_operations, project=m_project, type="User Story" ) print(f"创建成功,User Story ID:{user_story.id}")
2. 获取User Story信息(标题、描述、ID)
批量获取指定ID的工作项
# 要查询的User Story ID列表 target_ids = [22, 33] # 指定要返回的字段,也可以不传返回全部字段 fields = ["System.Id", "System.Title", "System.Description", "System.State"] work_items = wit_client.get_work_items( ids=target_ids, project=m_project, fields=fields ) for item in work_items: print(f"ID:{item.id}") print(f"标题:{item.fields['System.Title']}") print(f"描述:{item.fields.get('System.Description', '无描述')}") print(f"当前状态:{item.fields['System.State']}") print("---")
3. 修改User Story状态(激活/关闭)
def update_us_status(us_id, target_status): patch_operations = [ JsonPatchOperation( op="replace", path="/fields/System.State", value=target_status ) ] updated_us = wit_client.update_work_item( document=patch_operations, id=us_id, project=m_project ) print(f"ID {us_id} 状态已更新为:{updated_us.fields['System.State']}") # 激活User Story,状态值根据项目工作流配置调整,一般是"Active" update_us_status(22, "Active") # 关闭User Story,状态值一般是"Closed" update_us_status(33, "Closed")
原有代码问题说明
你之前的代码报错是因为手动实例化WorkItemTrackingClient时没有绑定认证凭证,正确的做法是通过已完成认证的Connection对象调用get_work_item_tracking_client()获取客户端实例,不需要单独初始化客户端。
内容的提问来源于stack exchange,提问作者Thunderssucks
相关产品推荐
相关产品推荐

