结果上传 API

结果上传 API 可以用来将任何支持的测试结果文件格式上传到 Squish 测试中心。该 API 也可以用来为现有报告添加标签或附件。

授权

所有端点都使用以下描述的授权方法之一,使用 HTTP Authorization 重头。

名称描述
基本认证
  • 用户名:密码的 Base64 编码。
  • 示例: 'Authorization: Basic YWRtaW5AcXQuaW86UXRSb2Nrcw=='
Squish 测试中心访问令牌
  • 使用令牌值可以在假设拥有上传权限的用户中提供访问权限。
  • 示例: 'Authorization: Token zX4AAEdKAAD3GwAAfnUAAFd8AADybwAAXnUAAFUaAAA'

POST /import - 创建报告

当上传测试结果以创建报告时,您还需要提供有关报告将包含哪些项目和批次的详细信息。

您可以通过多次指定 result[] 字段一次上传多个结果文件。根据所需的成果类型,您需要指定正确的 Content-Type 作为 multipart/form-data 内容的一部分。以下是一些内容类型

  • Squish 结果 xml: application/xmltext/xml
  • Squish 压缩结果文件夹: application/zipapplication/octet-streamapplication/x-zip-compressed
  • Squish 结果 JavaScript 文件(来自 HTML 报告):application/javascriptapplication/x-javascripttext/javascript
  • Coco 结果(CSMES/CSEXE):application/octet-stream
  • JUnitCppUnit 和其他 xUnit 格式: application/xmltext/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文件索引相对应的纪元时间戳作为导入测试的起始时间,而不是上传时间。

报表响应

名称类型描述
200 - OK报表响应操作成功。可能仍包含有关在解析测试结果期间找到的资源丢失的信息。
400 - 错误请求错误响应无效的输入。
503 - 服务不可用错误响应服务器正忙,稍后再试。

报表示例

上传包含两个标签的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/xmltext/xml
  • JUnitCppUnit 和其他 xUnit 格式: application/xmltext/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. 的商标。所有其他商标均为其各自所有者的财产。