如何使用 API 将测试点分配给 Azure DevOps 中的测试人员

问题描述 投票:0回答:1

根据微软自己的文档中的Points - Update,在api ver 7.1中,我们可以通过更新测试点来将测试人员分配给测试点,例如:

补丁 https://dev.azure.com/{organization}/{project}/_apis/test/Plans/{planId}/Suites/{suiteId}/points/{pointIds}?api-version=7.1

示例请求正文:

{“测试员”:{ “显示名称”:“贾马尔·哈内特”} }

但是,当我在使用参数 uniqueName 时对所选测试点执行此操作时,我收到以下错误(请注意我收到的有用消息):

{
    "$id": "1",
    "innerException": null,
    "message": "Tester",
    "typeName": "System.ArgumentException, mscorlib",
    "typeKey": "ArgumentException",
    "errorCode": 0,
    "eventId": 0
}

所以我的问题是:如何通过 API 调用将测试人员分配到 Azure DevOps 中的测试点?文档还指出 uniqueName 已被弃用 - 并建议改用 Domain+PrincipalName。但作为什么——作为 uniqueName?作为另一个键/参数?校长姓名是什么?新值应该采用什么格式?

我知道授权、标头和参数设置正确,因为我重复使用相同的基本方法从测试计划中提取测试套件,然后测试用例,然后通过向它们分配配置来创建测试点。唯一失败的步骤是测试人员分配。我将 RestAssured 与 Java 结合使用,并将 JSON 构建为 POJO。

我的代码 - 请注意,在 RA 中,查询参数是通过方法 queryParam 和 queryParams 添加的,而不是使用 将它们添加到路径末尾(也很抱歉奇怪的值,必须匿名数据):

PATCH Request Base URI: https://dev.azure.com
PATCH Request Base PATH: /organizationName/projectName/_apis/test/Plans/111111/Suites/222222/points/333333

我的杰森:

{"tester":{"uniqueName":"[email protected]"}} // I use company emails, value that populates this field for other TCs  

标题:

Connection=keep-alive
Accept-Encoding=gzip,deflate
Accept=text/xml;charset=UTF-8
Accept=application/json
X-XSS-Protection=1; mode=block

参数:

{api-version=7.1}

请求代码:

 protected Response sendPatchRequest(Object serializedPojo, int expectedStatusCode) {
        // setup
        RestAssured.baseURI = baseURI;
        RestAssured.basePath = basePath;

        // logs
        String payloadAsString = objectMapper.writeValueAsString(serializedPojo);
        LogsHelper.log("PATCH Request payload: " + System.lineSeparator() + payloadAsString + "--------------------------------------");
        LogsHelper.log("PATCH Request Base URI: " + baseURI);
        LogsHelper.log("PATCH Request Base PATH: " + basePath);
        LogsHelper.log("PATCH Request Headers list: " + getHeaders().toString());

        // request
        ExtractableResponse<Response> extract = RestAssured
                .given()
                .queryParams(params)
                .relaxedHTTPSValidation()
                .headers(headers)
                .body(serializedPojo)
                .contentType("application/json")
                .when()
                .patch()
                .then()
                .extract();
        try {
            assertEquals("Status code not equal " + expectedStatusCode, expectedStatusCode, extract.response().getStatusCode());
        } catch (AssertionError e) {
            LogsHelper.log("PATCH Request response: " + System.lineSeparator() + extract.response().prettyPrint());
        }
        return extract.response();
    }
java azure-devops rest-assured azure-devops-rest-api
1个回答
0
投票

我在 VS 开发者社区论坛这里发布了同样的问题,并得到了以下答案:

感谢您的宝贵时间,祝您有美好的一天!

在与我们内部资源的讨论中,我们确认 当前时间建议使用displayName和ID 在此 API 中。由于 UniqueName 已被弃用,我们不应该在 我们的工作流程。

我们已将此情况报告给相关团队以进一步处理 评价。目前,我们将关闭此票证: 这不是一个错误。

感谢您的理解,我们建议您返回 如果您遇到任何与 Azure DevOps 相关的问题,请访问此社区。

我们仍然会在这里帮助您解决问题。谢谢你的帮助 我们构建更好的 Azure DevOps。

因此,目前您只能使用

displayName
id
来分配测试人员。

© www.soinside.com 2019 - 2024. All rights reserved.