2017-05-25 155 views
1

我的意图是批量更新测试运行步骤。我已经创建了测试集文件夹 - >测试集实例 - >测试运行。我可以张贴的JSON 与URL更新测试运行使用ALM API批量更新HP ALM中的运行步骤

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调用。

通行证这些内容类型报头中的一种: 内容类型=“application/xml进行;类型=集” 内容类型=“应用/ JSON;类型=集合”

使用的内容类型您正在发送

现在我试图张贴批量更新JSON的多种组合中的数据匹配头,每次我得到一个错误与

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

我试图张贴的JSON到URL

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资源进行了批量操作,请指出发布请求中Iam出错的位置。供参考这是一个PUT请求。预先感谢您

回答

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,我使用,它仍然有可能在多个实体发送批量操作,但要记得在报头中的内容类型添加你提到。

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

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

通过这些内容类型标头中的一种: 内容类型=“application/xml进行;类型=集” 内容类型=“应用/ JSON类型=集?”

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

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

祝你有美好的一天,希望我帮了你一下! Ciao

+0

@Macro smdm,谢谢你的回答,我发现该操作是不可能的,因为你正确地指出它被认为是一个实体的子实体。我希望有一个选择,可以进行批量更新,而不是逐个发布。 –

+0

@ Macintosh_89:我也想这样做,因为即使从运行阶段获取的xml看起来像来自实体的普通程序,所以将它们放在/ post后不会太复杂一个子实体,但据说这是迄今为止不可能的);也许在即将到来的QC版本中是可能的。我已经实施了一步一步发送每个运行步骤(但当然这不是一个很好的解决方案泛滥请求)。祝你今天愉快! –