结果上传 API
结果上传 API 可以用来将任何支持的测试结果文件格式上传到 Squish 测试中心。该 API 也可以用来为现有报告添加标签或附件。
授权
所有端点都使用以下描述的授权方法之一,使用 HTTP Authorization
重头。
名称 | 描述 |
---|---|
基本认证 |
|
Squish 测试中心访问令牌 |
|
POST /import - 创建报告
当上传测试结果以创建报告时,您还需要提供有关报告将包含哪些项目和批次的详细信息。
您可以通过多次指定 result[]
字段一次上传多个结果文件。根据所需的成果类型,您需要指定正确的 Content-Type
作为 multipart/form-data 内容的一部分。以下是一些内容类型
- Squish 结果 xml: application/xml 或text/xml。
- Squish 压缩结果文件夹: application/zip、application/octet-stream 或 application/x-zip-compressed。
- Squish 结果 JavaScript 文件(来自 HTML 报告):application/javascript、application/x-javascript 或 text/javascript。
- Coco 结果(CSMES/CSEXE):application/octet-stream。
- JUnit、CppUnit 和其他 xUnit 格式: application/xml 或 text/xml。
有关支持的成果格式的更多信息,请参阅 支持的成果格式。
报告请求正文
内容类型:multipart/form-data
对于上传的文件,重要的是 Content-Disposition
头包含 filename
参数。
名称 | 类型 | 必需 | 可重复 | 描述 |
---|---|---|---|---|
项目或名称 | 字符串 | 条件 | 否 | 如果没有存在与提供值匹配的项目,则将创建一个新项目。如果为空,则Squish Test Center将假定项目名称为'default'。 |
批处理 | 字符串 | 条件 | 否 | 如果没有存在与提供值匹配的批处理,则将创建一个新的批处理。如果为空,则Squish Test Center将创建一个新的批处理。 |
result[] | N/A | 是 | 是 | 结果文件(路径)。 |
label[] | 字符串 | 条件 | 是 | 形式为 键=值 的标签。注意:换行符、逗号和双引号不是有效的标签字符。 |
attachment[] | N/A | 条件 | 是 | 附件文件(路径)。 |
lastModified[] | 字符串 | 条件 | 是 | 仅用于上传Coco测试结果。将使用与结果数组中Coco CSMES文件索引相对应的纪元时间戳作为导入测试的起始时间,而不是上传时间。 |
报表响应
报表示例
上传包含两个标签的Squish结果xml
示例请求
POST http://testcenter.example.com/upload/import Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="project" My Test Center project ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="batch" My Batch ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="label[]" OS=Windows ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="label[]" Version=1.0 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="result[]"; filename="results.xml" Content-Type: text/xml (data) ------WebKitFormBoundary7MA4YWxkTrZu0gW--
Use ^ instead of \ as endline on Windows. curl --location http://testcenter.example.com/upload/import \ --header Content-Type:multipart/form-data \ --header Authorization:"Basic XXXXXXXXXXXXXXXXXXX" \ --form project="My Test Center project" \ --form batch="My Batch" \ --form label[]="OS=Windows" \ --form label[]="Version=1.0" \ --form result[]=@"/path/to/file/results.xml"
示例响应
状态码:200
{ "imports": [ { "batch": "http://testcenter.example.com/testcenter/explore?type=testsuite&project0=My%20Test%20Center%20project&batch0=My%20Batch", "import-id": 1, "url": "http://testcenter.example.com/testcenter/explore?report=1" } ], "results": { "failures": 12, "passes": 24 }, "success": { "errors": "" "info": "12 failure messages (ERROR/FAIL/FATAL/XPASS), 24 pass messages (PASS/WARNING/XFAIL) and 41 new tests defined", "message": "imported" } }
上传包含Coco结果和附件的Squish压缩结果文件夹
示例请求
POST http://testcenter.example.com/upload/import Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="project" My Test Center project ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="batch" My Batch ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="attachment[]"; filename="README.md" Content-Type: text/plain (data) ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="result[]"; filename="myresult.zip" Content-Type: application/zip (data) ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="result[]"; filename="mytest.csmes" Content-Type: application/octet-stream (data) ------WebKitFormBoundary7MA4YWxkTrZu0gW--
Use ^ instead of \ as endline on Windows. curl --location http://testcenter.example.com/upload/import \ --header Content-Type:multipart/form-data \ --header Authorization:"Basic XXXXXXXXXXXXXXXXXXX" \ --form project="My Test Center project" \ --form batch="My Batch" \ --form attachment[]=@"/path/to/file/README.md" \ --form result[]=@"/path/to/file/results.xml" \ --form result[]=@"/path/to/file/mytest.csmes"
示例响应
状态码:200
{ "imports": [ { "batch": "http://testcenter.example.com/testcenter/explore?type=testsuite&project0=My%20Test%20Center%20project&batch0=My%20Batch", "import-id": 1, "url": "http://testcenter.example.com/testcenter/explore?report=1" } ], "results": { "failures": 12, "passes": 24 }, "success": { "errors": "" "info": "12 failure messages (ERROR/FAIL/FATAL/XPASS), 24 pass messages (PASS/WARNING/XFAIL) and 41 new tests defined", "message": "imported" } }
PATCH /import/{id} - 修改报表
可以使用此端点向现有报表添加XML结果、标签和/或附件。支持的XML结果有
- Squish 结果 xml: application/xml 或text/xml。
- JUnit、CppUnit 和其他 xUnit 格式: application/xml 或 text/xml。
补丁请求正文
内容类型:multipart/form-data
对于上传的文件,重要的是 Content-Disposition
头包含 filename
参数。
名称 | 类型 | 必需 | 可重复 | 描述 |
---|---|---|---|---|
result[] | N/A | 是 | 是 | 结果文件(路径)。 |
label[] | 字符串 | 条件 | 是 | 形式为 键=值 的标签。注意:换行符、逗号和双引号不是有效的标签字符。 |
attachment[] | N/A | 条件 | 是 | 附件文件(路径)。 |
补丁响应
名称 | 类型 | 描述 |
---|---|---|
200 - OK | 报表响应 | 操作成功。可能仍包含有关在解析测试结果期间找到的资源丢失的信息。 |
400 - 错误请求 | 错误响应 | 无效的输入。 |
500 - 内部服务器错误 | 错误响应 | 服务器正忙,稍后再试。 |
补丁示例
将Squish结果添加到报表
示例请求
PATCH http://testcenter.example.com/upload/import/1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="result[]"; filename="results.xml" Content-Type: text/xml (data) ------WebKitFormBoundary7MA4YWxkTrZu0gW--
Use ^ instead of \ as endline on Windows. curl --request PATCH --location http://testcenter.example.com/upload/import/1 \ --header Content-Type:multipart/form-data \ --header Authorization:"Basic XXXXXXXXXXXXXXXXXXX" \ --form result[]=@"/path/to/file/results.xml"
示例响应
状态码:200
{ "imports": [ { "batch": "http://testcenter.example.com/testcenter/explore?type=testsuite&project0=My%20Test%20Center%20project&batch0=My%20Batch", "import-id": 1, "url": "http://testcenter.example.com/testcenter/explore?report=1" } ], "results": { "failures": 10, "passes": 20 }, "success": { "errors": "" "info": "10 failure messages (ERROR/FAIL/FATAL/XPASS), 20 pass messages (PASS/WARNING/XFAIL) and 15 new tests defined", "message": "updated" } }
将附件和标签添加到报表
示例请求
PATCH http://testcenter.example.com/upload/import/1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="label[]" OS=Linux ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="attachment[]"; filename="README.md" Content-Type: text/plain (data) ------WebKitFormBoundary7MA4YWxkTrZu0gW--
Use ^ instead of \ as endline on Windows. curl --request PATCH --location http://testcenter.example.com/upload/import/1 \ --header Content-Type:multipart/form-data \ --header Authorization:"Basic XXXXXXXXXXXXXXXXXXX" \ --form label[]="OS=Linux" \ --form attachment[]=@"/path/to/file/README.md"
示例响应
状态码:200
{ "imports": [ { "batch": "http://testcenter.example.com/testcenter/explore?type=testsuite&project0=My%20Test%20Center%20project&batch0=My%20Batch", "import-id": 1, "url": "http://testcenter.example.com/testcenter/explore?report=1" } ], "results": { "failures": 0, "passes": 0 }, "success": { "message": "updated" } }
定义
报表响应
名称 | 类型 | 描述 |
---|---|---|
imports.batch | 字符串 | 包含报表的批处理URL。 |
import.import-id | 整型 | 创建/修改报表的id。 |
import.url | 字符串 | 报表的URL。 |
results.failures | 整型 | 创建/修改期间添加的失败数。 |
results.passes | 整型 | 创建/修改期间添加的通过数。 |
success.error | 字符串 | 有关请求期间发生的错误和/或警告的信息。 |
success.info | 字符串 | 有关创建的失败/通过/测试的信息。 |
success.message | 字符串 | 有关成功请求(“导入”或“更新”)的信息。 |
错误响应
错误响应包含一个用于 错误 属性的对象,具体内容见下表
名称 | 类型 | 描述 |
---|---|---|
code | 整型 | 服务器返回的错误代码。 |
message | 字符串 | 解释在处理请求过程中遇到的问题。 |
©2023 Qt 公司有限公司。此处包含的文档贡献者是各自所有者的版权。
本提供的文档根据 Free Software Foundation 发布的 GNU 自由文档许可证第 1.3 版的条款进行许可。
Qt 以及相应的标志是芬兰和/或其他国家/地区的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。