2017-05-25 60 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版本中是可能的。我已經實施了一步一步發送每個運行步驟(但當然這不是一個很好的解決方案氾濫請求)。祝你今天愉快! –