使用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
相关产品推荐
相关产品推荐

