如何使用Rest API在测试案例工作项中添加测试步骤-TFS2018 / Python

时间:2019-01-09 08:12:47

标签: api testing tfs request postman

我正在使用 Microsoft的TFS 2018 ,并且已经开始在 Visual Studio 2018中使用 Python 3.7 编写一些 Selenium 测试用例。

我设法使用TFS的REST API返回我的TFS项目并创建新的测试用例。

我找不到的是如何使用此API来传递此测试用例的所有测试步骤的列表。我不确定如何以及是否可以将它们作为字符串或数组添加到请求的正文中。

此刻,我首先尝试在Postman上进行此工作,然后再尝试使用python。

这是请求:

curl -X POST \
  'https://TFSLINK:443/DefaultCollection/TFS/_apis/wit/workitems/$Test%20Case?api-version=4.1' \
  -H 'Authorization: Basic MYKEY' \
  -H 'Content-Type: application/json-patch+json' \
  -H 'cache-control: no-cache' \
  -d '[
  {
    "op": "add",
    "path": "/fields/System.Title",
    "from": null,
    "value": "Sample task 2"
  }
]'

是否有实现添加步骤的方法?该API没有提及任何内容。

在创建测试用例后得到的响应中,我得到了一个名为“字段”的部分,该部分应包括步骤,但我在响应中看不到它们。

{
    "id": 731,
    "rev": 1,
    "fields": {
        "System.AreaPath": "TFS",
        "System.TeamProject": "TFS",
        "System.IterationPath": "TFS",
        "System.WorkItemType": "Test Case",
        "System.State": "Design",
        "System.Reason": "New",
        "System.AssignedTo": "Marialena <TFS\\marialena>",
        "System.CreatedDate": "2019-01-09T08:00:50.51Z",
        "System.CreatedBy": "Marialena <TFS\\marialena>",
        "System.ChangedDate": "2019-01-09T08:00:50.51Z",
        "System.ChangedBy": "Marialena <TFS\\marialena>",
        "System.Title": "Sample task 2",
        "Microsoft.VSTS.Common.StateChangeDate": "2019-01-09T08:00:50.51Z",
        "Microsoft.VSTS.Common.ActivatedDate": "2019-01-09T08:00:50.51Z",
        "Microsoft.VSTS.Common.ActivatedBy": "Marialena <TFS\\marialena>",
        "Microsoft.VSTS.Common.Priority": 2,
        "Microsoft.VSTS.TCM.AutomationStatus": "Not Automated"
    },
    "_links": {
        "self": {
            "href": "https://TFSLINK/DefaultCollection/_apis/wit/workItems/731"
        },
        "workItemUpdates": {
            "href": "https://TFSLINK/DefaultCollection/_apis/wit/workItems/731/updates"
        },
        "workItemRevisions": {
            "href": "https://TFSLINK/DefaultCollection/_apis/wit/workItems/731/revisions"
        },
        "workItemHistory": {
            "href": "https://TFSLINK/DefaultCollection/_apis/wit/workItems/731/history"
        },
        "html": {
            "href": "https://TFSLINK/web/wi.aspx?pcguid=07b658c4-97e5-416f-b32d-3dd48d7f56cc&id=731"
        },
        "workItemType": {
            "href": "https://TFSLINK/DefaultCollection/18ca0a74-cf78-45bf-b163-d8dd4345b418/_apis/wit/workItemTypes/Test%20Case"
        },
        "fields": {
            "href": "https://TFSLINK/DefaultCollection/_apis/wit/fields"
        }
    },
    "url": "https://TFSLINK/DefaultCollection/_apis/wit/workItems/731"
}

我已经尝试创建此PATCH请求以更新步骤,但没有成功

curl -X PATCH \
  'https://TFSLINK:443/DefaultCollection/TFS/_apis/wit/workItems/730?api-version=4.1' \
  -H 'Authorization: Basic MYKEY' \
  -H 'Content-Type: application/json-patch+json' 
  -d '[
  {
    "op": "add",
    "path": "/fields/Microsoft.VSTS.TCM.Steps",
    "from": null,
    "value": "Test"
  },
  {
    "op": "add",
    "path": "/fields/Steps",
    "from": null,
    "value": "Test"
  }
]'

也许这是另一个主题,但是如果可以实现上述要求,那么在运行测试并更新测试计划之后是否还可以通过结果?如果与此无关,请仅在测试步骤上帮助我,而忽略此问题。

非常感谢。

1 个答案:

答案 0 :(得分:1)

这是使用Rest API在测试用例中添加测试步骤的方法:

{ 
    "op": "add", 
    "path": "/fields/Microsoft.VSTS.TCM.Steps",
    "value": "<steps id=\"0\" last=\"1\"><step id=\"2\" type=\"ValidateStep\"><parameterizedString isformatted=\"true\">Input step 1</parameterizedString><parameterizedString isformatted=\"true\">Expectation step 1</parameterizedString><description/></step></steps>"  
} 

几个步骤(本示例中为3个):

{ 
    "op": "add", 
    "path": "/fields/Microsoft.VSTS.TCM.Steps",
    "value": "<steps id=\"0\" last=\"4\"><step id=\"2\" type=\"ValidateStep\"><parameterizedString isformatted=\"true\"><P>step 1 \"Action\"</P></parameterizedString><parameterizedString isformatted=\"true\"><P>step 1 \"Expected\"<BR/></P></parameterizedString><description/></step><step id=\"3\" type=\"ValidateStep\"><parameterizedString isformatted=\"true\"><P>step 2 \"Action\"<BR/></P></parameterizedString><parameterizedString isformatted=\"true\"><P>step 2 \"Expected\"<BR/></P></parameterizedString><description/></step><step id=\"4\" type=\"ValidateStep\"><parameterizedString isformatted=\"true\"><P>step 3 \"Action\"<BR/></P></parameterizedString><parameterizedString isformatted=\"true\"><P>step 3 \"Expected\"<BR/></P></parameterizedString><description/></step></steps>"  
}