使用Azure DevOps Python API创建工作项时遇400错误求助
Azure DevOps Python API 创建工作项返回400状态码的排查方案
以下是几种常见的原因及对应解决方法:
项目参数传递错误
你代码中用core_client.get_project(MY_PROJECT_ID)返回的project对象直接传给create_work_item的project参数,但该参数要求传入项目名称字符串或项目ID字符串,而非Project对象。将project=project改为project=MY_PROJECT_ID(或项目名称字符串)即可。PAT权限不足
检查你的个人访问令牌(PAT)是否配置了工作项写入权限,且令牌作用范围覆盖目标项目。权限不足会触发400或403错误。工作项类型名称不匹配
确认目标项目中确实存在名为Bug的工作项类型,部分项目可能自定义了类型名称(比如中文环境下可能叫"缺陷"),名称不匹配会导致接口无法识别,返回400。缺失必填字段
不同项目的Bug模板可能有额外必填字段,比如System.AreaPath、System.IterationPath等,仅填写标题和描述可能不满足要求。可以通过Azure DevOps网页端创建Bug,查看必填字段后,在patch文档中补充对应add操作。
修正后的示例代码
from azure.devops.connection import Connection from azure.devops.v7_1.work_item_tracking import JsonPatchOperation from msrest.authentication import BasicAuthentication personal_access_token = "MY_PAT" organization_url = f'https://dev.azure.com/{MY_ORG}' project_identifier = "MY_PROJECT_ID" # 直接用项目ID或名称字符串 # 创建连接 credentials = BasicAuthentication('', personal_access_token) connection = Connection(base_url=organization_url, creds=credentials) wit_client = connection.clients.get_work_item_tracking_client() def create_patch_operation(op, field, value): patch = JsonPatchOperation() patch.op = op patch.path = f'/fields/{field}' patch.value = value return patch patch_document = [ create_patch_operation('add', 'System.Title', "Testing"), create_patch_operation('add', 'System.Description', "Hoping to create a new work item."), # 补充必填字段,根据你的项目模板调整 create_patch_operation('add', 'System.AreaPath', f"{MY_ORG}\\{project_identifier}"), create_patch_operation('add', 'System.IterationPath', f"{MY_ORG}\\{project_identifier}\\\\Iteration 1") ] # project参数使用字符串类型的ID或名称 wit_client.create_work_item(document=patch_document, project=project_identifier, type="Bug")
内容的提问来源于stack exchange,提问作者davjfish
相关产品推荐
相关产品推荐

