我正在使用这样的邮递员在TFS 2018中创建一个测试用例:
curl -X POST \
'https://TFSURL:443/DefaultCollection/PROJECT/_apis/wit/workitems/$Test%20Case?api-version=4.1' \
-H 'Authorization: Basic MYKEY' \
-H 'Content-Type: application/json-patch+json' \
-d '[
{
"op": "add",
"path": "/fields/System.AreaPath",
"from": null,
"value": "TEST\\Automation"
},
{
"op": "add",
"path": "/fields/System.IterationPath",
"from": null,
"value": "TEST\\Sprint 8"
},
{
"op": "add",
"path": "/fields/System.Title",
"from": null,
"value": "Sample task"
},
{
"op": "add",
"path": "/fields/Microsoft.VSTS.TCM.Steps",
"value": "<steps id=\"0\">
<step id=\"1\" type=\"ValidateStep\"><parameterizedString isformatted=\"true\">Input step 1</parameterizedString><parameterizedString isformatted=\"true\">Expectation step 1</parameterizedString><description/></step>
<step id=\"2\" type=\"ValidateStep\"><parameterizedString isformatted=\"true\">Input step 2</parameterizedString><parameterizedString isformatted=\"true\">Expectation step 2</parameterizedString><description/></step>
<step id=\"3\" type=\"ValidateStep\"><parameterizedString isformatted=\"true\">Input step 3</parameterizedString><parameterizedString isformatted=\"true\">Expectation step 3</parameterizedString><description/></step>
<step id=\"4\" type=\"ValidateStep\"><parameterizedString isformatted=\"true\">Input step 4</parameterizedString><parameterizedString isformatted=\"true\">Expectation step 4</parameterizedString><description/></step></steps>"
}
]'
如何在发送此请求之前检查该测试是否存在,以便我可以更新它而不是每次都创建一个新测试?
我原本希望通过以下方式做到这一点:
似乎在tfs中有一种方法可以请求获取所有工作项,但是我不确定是否可以根据项目的标题字段返回。 (Help page on how to do this request)
如果tfs中存在具有该名称的任何内容,我尝试使用搜索api返回结果,但是我收到一条错误消息,我不知道如何解决
curl -X POST \
'https://TFSURL:443/DefaultCollection/PROJECT/_apis/search/workitemsearchresults?api-version=4.1-preview' \
-H 'Authorization: Basic MYKEY' \
-H 'Content-Type: application/json' \
-d '[
{
"searchText": "Sample task",
"$skip": 0,
"$top": 1,
"filters": {
"System.AreaPath": [
"TEST\\Automation"
]
},
"$orderBy": [
{
"field": "system.id",
"sortOrder": "ASC"
}
],
"includeFacets": true
}
]'
'
响应:
{
"count": 1,
"value": {
"Message": "An error has occurred."
}
}
答案 0 :(得分:0)
只是回答我自己的问题,以防万一其他人需要它,如我所读,您不能仅凭一个或两个不同的API调用就做到这一点。对于以下解决方案,我向TFS创建了多个REST API请求,并使用Python> 3对其进行了调用/处理。
为了更新一个测试用例(如果不存在)或创建一个新的用例,我做了什么:
我知道这不是最快的解决方案,但至少它能起作用! 如果有另一种方法更容易,更快捷,我很乐意遵循。