2016-09-23 183 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