根据微软自己的文档中的Points - Update,在api ver 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();
}
我在 VS 开发者社区论坛这里发布了同样的问题,并得到了以下答案:
感谢您的宝贵时间,祝您有美好的一天!
在与我们内部资源的讨论中,我们确认 当前时间建议使用displayName和ID 在此 API 中。由于 UniqueName 已被弃用,我们不应该在 我们的工作流程。
我们已将此情况报告给相关团队以进一步处理 评价。目前,我们将关闭此票证: 这不是一个错误。
感谢您的理解,我们建议您返回 如果您遇到任何与 Azure DevOps 相关的问题,请访问此社区。
我们仍然会在这里帮助您解决问题。谢谢你的帮助 我们构建更好的 Azure DevOps。
因此,目前您只能使用
displayName
和 id
来分配测试人员。