You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python/Pytest创建Azure DevOps工作项报合法patch文档错误

问题根因

Azure DevOps 工作项创建接口遵循 JSON Patch 规范,对请求体格式有两个强制要求:

  • 载荷必须是数组格式,哪怕仅需要执行单字段添加操作,也要把操作对象包裹在数组中
  • 请求头的 Content-Type 必须设置为 application/json-patch+json

你当前代码里的 payload 是单个字典对象,不符合数组要求,所以接口返回补丁文档无效的报错。Postman 能执行成功大概率是你在 Postman 里编写请求体时已经加了数组包裹,只是写 Python 代码时遗漏了该逻辑。

修正后代码

import json

def test_create_work_item(work_items):
    # 操作对象放入数组中
    payload = [
        {
            'op': 'add',
            'path': '/fields/System.Title',
            'value': 'Sample bug'
        }
    ]
    pl = json.dumps(payload)
    # 如果你是直接用 requests 发请求,需要补充正确的请求头:
    # headers = {
    #     "Content-Type": "application/json-patch+json",
    #     "Authorization": "Basic 你的PAT编码字符串"
    # }
    work_item = work_items.create(body=pl, type='bug')
    assert work_item.status_code == 200

额外优化提示

如果你使用的是微软官方的 azure-devops Python SDK,不需要自行做 JSON 序列化,直接把 Python 列表传给 body 参数即可,SDK 会自动处理序列化和请求头配置。

内容的提问来源于stack exchange,提问作者Devang Sanghani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:09:03