结果报告API
结果报告API可以用于将测试结果上传到Squish测试中心。您可以使用它上传我们尚未支持结果格式的测试工具的结果。您还可以使用它来提高结果细节级别,因为此API允许以类似于Squish结果报告的详细程度报告结果,包括屏幕截图、附件甚至截图验证点。
从概念上讲,报告创建和测试元素的创建是隐式发生的。报告由套件端点创建。如果您不提供现有报告ID,或匹配先前创建的报告的一组标签,则将创建一个新的报告。对于测试元素(套件、测试用例、功能、场景、步骤、部分),所有端点都报告指定测试的执行,并返回一个运行,该运行表示测试的执行。如果指定的测试是未知的,它将隐式创建。
注意:使用此API报告结果时,您将遵循一定的分层顺序。首先,您报告套件的执行,然后是该套件中测试用例的执行。请注意,您只能在特定报告的每个分层级别上创建的最后元素中报告测试元素执行或测试事件。因此,一旦报告套件中的第二个测试用例的执行,您就再也不能为第一个测试用例报告执行或事件。
为了帮助您开始使用结果报告API,您可以在testcenter/examples
文件夹中找到一个Python示例实现。
授权
所有端点都使用以下描述中的一种授权方法,使用HTTP Authorization
头。
名称 | 描述 |
---|---|
基本认证 |
|
Squish测试中心访问令牌 |
|
POST /suites - 创建测试套件
在报告测试套件执行时,您还需要提供有关测试套件所属项目的信息。您还需要指定是否希望测试套件执行成为特定批次中特定报告的一部分,或者是否应创建新的报告或批次。以下规则适用
- 如果没有提供批次、报告ID或标签,则将创建新的批次和报告。
- 如果提供了批次,但没有提供报告ID或标签,则将套件添加到给定批次的第一个报告中。
- 如果提供了报告ID,则将套件添加到具有此ID的报告。
- 如果同时提供了批次和标签,Squish测试中心会尝试在给定的批次中查找具有完全相同标签集的报告并重复使用它。如果找不到匹配的报告,则会创建新报告。
套件请求正文
内容类型:application/json
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
项目 | 字符串 | 真实 | 如果没有项目存在,则将创建一个新项目。 |
批次 | 字符串 | 条件 | 如果没有批次存在,则会创建一个新批次。 |
reportId | 整数 | 条件 | 报告的ID。 |
标签 | 标签数组 | 条件 | 标签数组。 |
测试 | 测试 | 真实 | 创建测试的详细信息。 |
套件响应
套件示例
使用项目和名称创建套件
示例请求
POST http://testcenter.example.com/upload/suites { "project": "MyProject", "test": { "name": "MyTest" } }
示例响应
状态码:201
{ "project": "MyProject", "batch": "MyBatch", "reportId": 25, "runId": 12 }
使用reportId和完整详细的测试创建套件
示例请求
POST http://testcenter.example.com/upload/suites { "reportId": 25, "test": { "name": "MyTest", "summary": "MySummary", "description": "MyDescription" } }
示例响应
状态码:201
{ "project": "MyProject", "batch": "MyBatch", "reportId": 25, "runId": 12 }
POST /cases - 创建测试案例
您可以使用此端点来报告测试案例执行。
案例请求正文
内容类型:application/json
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
runId | 整数 | 真实 | 期望父测试的ID。父测试必须是测试套件。 |
测试 | 测试 | 真实 | 创建测试的详细信息。 |
案例响应
案例示例
创建具有所有详细信息的测试案例
示例请求
POST http://testcenter.example.com/upload/cases { "runId": 12, "test": { "name": "My Test Case", "summary": "My Test Case Summary", "description": "My Test Case Description" } }
示例响应
状态码:201
{ "runId": 13 }
POST /features - 创建功能
您可以使用此端点来报告测试功能执行。
功能请求数据体
内容类型:application/json
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
runId | 整数 | 真实 | 期望父测试的ID。父测试必须是测试套件或测试用例。 |
测试 | 测试 | 真实 | 创建测试的详细信息。 |
功能响应
功能示例
创建带有全部详情的功能
示例请求
POST http://testcenter.example.com/upload/features { "runId": 13, "test": { "name": "My Feature", "summary": "My Feature Summary", "description": "My Feature Description" } }
示例响应
状态码:201
{ "runId": 14 }
POST /scenarios - 创建场景
您可以使用此端点来报告场景执行。
场景请求数据体
内容类型:application/json
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
runId | 整数 | 真实 | 期望父测试的ID。父测试必须是一个功能。 |
测试 | 测试 | 真实 | 创建测试的详细信息。 |
场景响应
场景示例
创建带有全部详情的场景
示例请求
POST http://testcenter.example.com/upload/scenarios { "runId": 14, "test": { "name": "My Scenario", "summary": "My Scenario Summary", "description": "My Scenario Description" } }
示例响应
状态码:201
{ "runId": 15 }
POST /steps - 创建步骤
您可以使用此端点来报告步骤执行。
步骤请求数据体
内容类型:application/json
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
runId | 整数 | 真实 | 期望父测试的ID。父测试必须是一个场景。 |
测试 | 测试 | 真实 | 创建测试的详细信息。 |
步骤响应
步骤示例
创建带有全部详情的步骤
示例请求
POST http://testcenter.example.com/upload/steps { "runId": 16, "test": { "name": "My Step", "summary": "My Step Summary", "description": "My Step Description" } }
示例响应
状态码:201
{ "runId": 17 }
POST /sections - 创建部分
您可以使用此端点来报告部分执行。
部分请求数据体
内容类型:application/json
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
runId | 整数 | 真实 | 期望父测试的ID。 |
测试 | 测试 | 真实 | 创建测试的详细信息。 |
部分响应
部分示例
创建带有全部详情的部分
示例请求
POST http://testcenter.example.com/upload/sections { "runId": 17, "test": { "name": "My Section", "summary": "My Section Summary", "description": "My Section Description" } }
示例响应
状态码:201
{ "runId": 18 }
POST /events - 创建事件
事件端点可用于报告测试事件,如成功或失败的验证、日志消息、警告、截图和其他附件。
事件请求数据体
注意:vp和attachment参数互斥。
内容类型:application/json
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
type | 字符串 | 真实 | 要创建的事件类型。有效类型包括:"PASS","XPASS","FAIL","XFAIL","WARNING","ERROR","FATAL","LOG","SKIPPED","ATTACHMENT" |
message | 字符串 | false | 与事件关联的消息。 |
detail | 字符串 | false | 与事件关联的详细信息。 |
trace | Trace[] | false | 与此事件相关的测试代码的堆栈跟踪。 |
location | Location | false | 与事件相关的源位置。 |
vp | VP | false | 与事件关联的VP,仅支持截图VP。 |
attachment | 字符串 | false | 要视为附件的文件名称,来自与该事件一起上传的文件列表。 |
screenshot | 字符串 | false | 要视为截图的文件名称,来自与该事件一起上传的文件列表。必须为基本MIME类型图像。 |
Content-Type: multipart/form-data
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
attachments[] | Array[] | 真实 | 上传文件的数组。 |
eventData | Event[] | 真实 | 请参见上述Event对象定义。 |
事件响应
名称 | 类型 | 描述 |
---|---|---|
204 - 空内容 | 空。 | 成功操作。 |
207 - 多状态 | 事件[]响应 | 检查每个事件响应以了解是否成功。 |
400 - 错误请求 | 错误响应 | 无效输入。 |
500 - 服务器错误 | 错误响应 | 在处理请求时出现服务器错误。 |
事件示例
创建简单PASS事件
示例请求
POST http://testcenter.example.com/upload/events { "runId": 18, "type": "PASS", "message": "My First Pass", "detail": "My First Pass Description" }
示例响应
状态码:201
{ }
创建带有失败截图的FAIL事件
示例请求
POST http://testcenter.example.com/upload/events Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="eventData" [{"runId": 18, "type": "FAIL", "screenshot": "My Image.jpg"}] ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="attachments[]"; filename="My Image.jpg" Content-Type: image/jpeg (data) ------WebKitFormBoundary7MA4YWxkTrZu0gW--
示例响应
状态码:207
[ { "code": 201, "body": "" } ]
定义
测试对象
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
名称 | 字符串 | 真实 | 测试的名称。 |
摘要 | 字符串 | false | 附加到测试的摘要。 |
描述 | 字符串 | false | 附加到测试的描述。 |
标签对象
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
键 | 字符串 | 真实 | 标签的名称。 |
值 | 字符串 | 真实 | 标签的值。 |
跟踪对象
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
uri | 字符串 | 真实 | 文件的路径。 |
行 | 整数 | 真实 | 文件中的行号。 |
位置对象
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
uri | 字符串 | 真实 | 文件的路径。 |
行 | 整数 | 真实 | 文件中的行号。 |
VP对象
名称 | 类型 | 必需 | 描述 |
---|---|---|---|
uri | 字符串 | 真实 | 仓库内部VP引用文件的路径。 |
attachment | 字符串 | false | 作为截图验证结果的文件名称,从与事件一起上传的文件列表中。 |
套房响应
名称 | 类型 | 描述 |
---|---|---|
项目 | 字符串 | 创建套房的项目名称。 |
批次 | 字符串 | 创建套房的批次名称。 |
reportId | 整数 | 创建套房的报告ID。 |
runId | 整数 | 创建的测试套房ID。 |
运行响应
名称 | 类型 | 描述 |
---|---|---|
runId | 整数 | 创建的测试运行的ID。 |
事件响应
名称 | 类型 | 描述 |
---|---|---|
代码 | 整数 | 服务器返回的错误代码。 |
body | 字符串 | 如果成功则为空,或根据错误代码显示错误消息。 |
错误响应
名称 | 类型 | 描述 |
---|---|---|
代码 | 整数 | 服务器返回的错误代码。 |
message | 字符串 | 处理请求过程中遇到的故障描述。 |
©2023 The Qt Company Ltd. 本文档的贡献者保留各自的版权。
本提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款授权的。
Qt及其相关标志是The Qt Company Ltd.在芬兰和其他全球国家的商标。所有其他商标均为其各自所有者的财产。