1

我的意图是批量更新测试运行步骤。我已经创建了测试集文件夹-> 测试集实例-> 测试运行。我可以通过使用 url 发布 json 来更新测试运行

  https://qcurl/qcbin/rest/domains/DOMAIN_NAME/projects/PROJECT_NAME/runs/run_id

{"Fields":[{"Name":"status","values":[{"value":"Passed"}]}]}

这工作正常

现在根据API

Post, Put 要创建或更新多个相同实体类型的实体,请在请求正文中传递数据。传递符合实体集合架构的 XML 字符串或集合上的 GET 操作返回的相同格式的 JSON 字符串。

要创建实体,请使用 HTTP POST 调用。要更新实体,请使用 HTTP PUT 调用。

传递以下内容类型标头之一: content-type="application/xml;type=collection" content-type="application/json;type=collection"

使用与您发送的数据相匹配的内容类型标头

现在我尝试了许多组合发布 json 以进行批量更新,每次我遇到错误时

{
 "Id": "qccore.method-not-allowed",
 "Title": "Method not allowed",
 "ExceptionProperties": null,
 "StackTrace": null
}

我试图发布到 url 的 json

http://ALM_URI/runs/<run_id>/run-steps


 {
"entities": [{
        "Fields": [
            {
                "Name": "id",
                "values": [{
                        "value": "1219"
                    }
                ]
            }, {
                "Name": "status",
                "values": [{
                        "value": "Failed"
                    }
                ]
            }
        ]
    }, {
        "Fields": [
            {
                "Name": "id",
                "values": [{
                        "value": "1220"
                    }
                ]
            }, {
                "Name": "status",
                "values": [{
                        "value": "Passed"
                    }
                ]
            }
        ]
    }

]

}

还有这个

{
"data": [
    {
        "Fields": [
            {
                "Name": "id",
                "values": [
                    {
                        "value": "1215"
                    }
                ]
            },
            {
                "Name": "status",
                "values": [
                    {
                        "value": "N/A"
                    }
                ]
            }
        ]

    },
    {
        "Fields": [
            {
                "Name": "id",
                "values": [
                    {
                        "value": "1216"
                    }
                ]
            },
            {
                "Name": "status",
                "values": [
                    {
                        "value": "N/A"
                    }
                ]
            }
        ]

    }
  ]

}

到目前为止,他们似乎都没有工作。如果有人对任何 ALM API 资源进行了任何批量操作,请指出我在发布请求时出错的地方。仅供参考,这是一个PUT请求。先感谢您

4

1 回答 1

0

@Macintosh_89:该操作应该是可能的(单独)。您的案例中缺少的是运行步骤(在 url 中):

POST/PUT/GET/DELETE    https://qcurl/qcbin/rest/domains/DOMAIN_NAME/projects/PROJECT_NAME/runs/run_id/run-steps

如果您想获取一些现有的运行步骤,那么您甚至可以在上一行的末尾给出运行步骤 ID。

REST API (POST-PUT-GET-DELETE) 的运行步骤修改应该可以用于高于 QC 11.50 的版本,因此请查看您的 QC REST 库。

如果您可以为多个运行步骤发送批量查询,请提出您的问题,我也在寻找解决方案,但到目前为止,我正在使用一个 for 循环来逐一报告所有运行步骤。

因此,请先尝试仅发送一个运行步骤字典,然后再将后续步骤发送给 QC。如果您能够在一次拍摄中向 QC 发送多个请求,请告诉我。

否则,上面建议的方法在我的情况下工作稳定,并且不会耗费大量时间。

希望这能澄清您的疑问!Ciao,祝你有美好的一天。

我看了看,对于 HP ALM 12.53,可以一次更新多个实例。看看下面的链接:

http://alm-help.saas.hpe.com/en/12.53/api_refs/REST/Update_Multiple_Instances.htm

在我使用的以前版本(如 11.52)中,仍然可以在多个实体上发送批量操作,但请记住在标题中添加您提到的内容类型。

Post, Put 要创建或更新多个相同实体类型的实体,请在请求正文中传递数据。传递符合实体集合架构的 XML 字符串或集合上的 GET 操作返回的相同格式的 JSON 字符串。

要创建实体,请使用 HTTP POST 调用。要更新实体,请使用 HTTP PUT 调用。

传递以下内容类型标头之一: content-type="application/xml;type=collection" content-type="application/json?type=collection"

使用与您发送的数据相匹配的内容类型标头。

最后但并非最不重要的一点是,对于运行步骤,我猜这个操作是不允许的。由于运行步骤可能被视为一个实体的子实体。如果我找到了 11.52 的散装方式,那么我会告诉你;)

祝您有美好的一天,希望我对您有所帮助!再见

于 2017-05-30T11:25:42.637 回答