2016-09-23 182 views
0

我試圖找出如何使用ALM的REST API創建測試運行。如何使用REST API向ALM添加測試運行

如果有人找到了更好的方法,那麼我很樂意看到它!

昨晚才明白這一點。

我使用了稱爲郵差的工具來解決這個問題。

這是如何通過REST API獲取您的testcycl-id。首先進入Test Lab頁面並創建一個測試集,然後向其添加一個測試用例(或多個測試用例)。在執行網格中,您可以添加「測試ID」和「ID」列。

測試ID =測試-ID

ID =測試配置-ID

旁邊的執行網格還有另一種稱爲, 「詳細信息」 按鈕。如果你點擊它,你可以找到測試集ID。

測試儀ID =週期-ID

一旦你的週期-ID,您可以執行GET,拉出全程記錄您的測試組的測試ID,其中將包括testcycl-ID。

GET https://SERVER/qcbin/rest/domains/DOMAIN/projects/PROJECT/test-instances?query= {週期ID [123];測試ID [4567]}

一旦你有了這個信息,你會得到一個XML與所有的測試實例的詳細信息,包括testcycl-ID雖然它簡單地稱爲「id」。

然後,您可以使用它創建一個測試運行,它既在測試運行頁上創建測試運行,也在測試實驗頁中更新測試集中的測試用例。

POST https://SERVER/qcbin/rest/domains/DOMAIN/projects/PROJECT/runs

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Entity Type="run"> 
<Fields> 
<Field Name="test-config-id"><Value>8901</Value></Field> 
<Field Name="cycle-id"><Value>123</Value></Field> 
<Field Name="test-id"><Value>4567</Value></Field> 
<Field Name="testcycl-id"><Value>THIS IS THE VALUE THAT YOU RAN THE GET TO FIND</Value></Field> 
<Field Name="build-revision"><Value>1</Value></Field> 
<Field Name="name"><Value>MyRun</Value></Field> 
<Field Name="owner"><Value>johnsmith</Value></Field> 
<Field Name="status"><Value>Passed</Value></Field> 
<Field Name="subtype-id"><Value>hp.qc.run.external-test</Value></Field> 
<Field Name="duration"><Value>5</Value></Field> 
<Field Name="execution-date"><Value>2016-09-23</Value></Field> 
<Field Name="execution-time"><Value>08:01:07</Value></Field> 
<Field Name="status"><Value>Passed</Value></Field> 
</Fields> 
</Entity> 

運氣最好那些你正在尋找這個!

+0

建議的整個過程可以很容易地自動化,你不會有必要每次都檢查每個參數。一個簡單的模塊可以在python中創建。請求模塊將幫助您輕鬆發送REST消息。我肯定會花一些時間和自動化這部分:)否則對於大項目,你會殺了自己!祝你有美好的一天! –

+1

已經用Java編碼並將其作爲我的Selenium自動化框架的一部分。像冠軍一樣工作,節省了很多時間。我的文章的主要觀點是幫助人們確定ALM中的關係,這可能會讓人感到困惑。 –

+0

REST API非常可靠且穩定,因此自動化將確實節省大量時間:-)幹得好!我在python中做了同樣的事情。祝你今天愉快。 –

回答

0

使用REST API將測試運行添加到ALM的最簡單方法是將有效負載的狀態添加到測試實例。我這樣做的方式是使用自動化,它將我的測試實例的狀態更改爲阻塞狀態,這會在測試運行模塊中自動生成新的fast_run。然後,我的自動腳本更改新創建的fast_run的狀態,最終改變它所鏈接的測試實例的狀態。

這裏的紅寶石(使用REST客戶端,並引入nokogiri寶石)代碼:

test_instances_url = "http://ALM-SERVER/qcbin/rest/domains/#{@alm_domain_name}/projects/#{@alm_project_name}/test-instances" 
    puts "Test Instance URL >> #{test_instances_url} " 
    @report.puts "Test Instance URL >> #{test_instances_url} " 
    test_instance_addition_doc = " 
    <Entity Type=\"test-instance\"> 
     <Fields> 
     <Field Name=\"order-id\"> 
      <Value>1</Value> 
     </Field> 
     <Field Name=\"test-id\"> 
      <Value>#{test_id}</Value> 
     </Field> 
     <Field Name=\"subtype-id\"> 
      <Value>hp.qc.test-instance.MANUAL</Value> 
     </Field> 
     <Field Name=\"cycle-id\"> 
      <Value>#{test_set_id}</Value> 
     </Field> 
     </Fields> 
    </Entity>" 

    puts "Test instance Addition XML >> #{test_instance_addition_doc} " 
    @report.puts "Test instance Addition XML >> #{test_instance_addition_doc} " 

    RestClient.post(URI.escape(test_instances_url), test_instance_addition_doc, :content_type => 'application/xml', :cookies => {:QCSession => @session_cookie, :LWSSO_COOKIE_KEY => @token}) 
    new_test_instances_url = "http://ALM-SERVER/qcbin/rest/domains/#{@alm_domain_name}/projects/#{@alm_project_name}/test-instances?query={cycle-id[#{test_set_id}]}" 
    puts "New Test Instances URL >> #{new_test_instances_url}" 
    @report.puts "New Test Instances URL >> #{new_test_instances_url}" 

    test_instance_id_doc = Nokogiri::XML(RestClient.get(URI.escape(new_test_instances_url), :cookies => {:QCSession => @session_cookie, :LWSSO_COOKIE_KEY => @token})) 
    test_instance_id = test_instance_id_doc.xpath("//Field[@Name='status']/Value[text()='No Run']/../preceding-sibling::Field[@Name='id']/Value").text 
    puts "Test Instance ID >> '#{test_instance_id}' " 
    @report.puts "Test Instance ID >> '#{test_instance_id}' " 

    new_test_instance_url = "http://ALM-SERVER/qcbin/rest/domains/#{@alm_domain_name}/projects/#{@alm_project_name}/test-instances/#{test_instance_id}" 
    test_instance_update_doc = "<Entity Type='test-instance'><Fields><Field Name='status'><Value>Blocked</Value></Field></Fields></Entity>" 
    RestClient.put(URI.escape(new_test_instance_url), test_instance_update_doc, :content_type => 'application/xml', :cookies => {:QCSession => @session_cookie, :LWSSO_COOKIE_KEY => @token}) 
    sleep(2) 
    runs_doc = Nokogiri::XML(RestClient.get(URI.escape("http://ALM-SERVER/qcbin/rest/domains/#{@alm_domain_name}/projects/#{@alm_project_name}/runs?query={cycle-id[#{test_set_id}]}"),:cookies => {:QCSession => @session_cookie, :LWSSO_COOKIE_KEY => @token})) 
    run_id = runs_doc.xpath("//Field[@Name='cycle-id']/Value[text()='#{test_set_id}']/../following-sibling::Field[@Name='id']/Value").last.text 
    puts "Run ID >> '#{run_id}' " 
    @report.puts "Run ID >> '#{run_id}' " 
+0

如果您添加一些代碼和/或您使用的請求 –

+0

它可能會更加有用回覆可能爲時已晚,但是我使用帶Rest-Client gem的Ruby執行此操作,而不是Java,如果您想查看Ruby代碼,我會發布它 – ayushk