2016-09-23 17 views
0

ALM用REST APIを使用してテスト実行を作成する方法を見つけようと、高低を検索しました。REST APIを使用してALMにテスト実行を追加する方法

誰かがもっと良い方法を見つけたら、私はそれを見たいと思っています!

昨夜、これを分かりました。

私はこれを理解するために郵便番号と呼ばれるツールを使用しました。

これは、REST API経由でtestcycl-idを取得する方法です。まず、テストラボページに移動してテストセットを作成し、テストケース(または複数のテストケース)を追加します。実行グリッドでは、「テストID」と「ID」の列を追加できます。

テストID =テストID

ID =試験-CONFIG-ID

次に実行グリッドに、 "詳細" と呼ばれる別のボタンがあります。これをクリックすると、テストセットIDを見つけることができます。

テスト・セットID =サイクル-ID

あなたはサイクル-idとテストIDを持っていたら、GETを実行するとtestcycl-IDが含まれます、あなたのテスト・セットの全レコードを引き出すことができます。

{[123]サイクル-ID、テストID [4567]} https://SERVER/qcbin/rest/domains/DOMAIN/projects/PROJECT/test-instances?query=をGET

この情報を入手したらあなたがしかしtestcycl-IDを含むすべてのテスト・インスタンスの詳細をXMLを取り戻しますよxmlは単純に "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 Automation Frameworkの一部となっています。チャンピオンのように動作し、非常に多くの時間を節約します。私のポストの主なポイントは、人々が非常に混乱する可能性のあるALMの関係を判断するのを助けることでした。 –

+0

REST APIは非常に信頼性が高く、安定しているため、自動化することで多くの時間を節約できます。私はPythonで同じことをしました。良い一日を。 –

答えて

0

REST APIを使用してALMにテスト実行を追加する最も簡単な方法は、ステータス付きのペイロードをテストインスタンスに配置することです。私が行ったやり方は、テストインスタンスのステータスをブロックに変更する自動化を使用することです。これはテストランモジュールで新しいfast_runを自動的に生成します。私の自動化されたスクリプトは、新しく作成されたfast_runの状態を変更し、最終的にリンクされているテストインスタンスのステータスを変更します。

はここ(休憩クライアントと鋸山宝石付き)ルビーのコード:

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

返信が遅すぎるかもしれませんが、Rubyコードを見たい場合はJava以外のRest-Client gemでRubyを使用しています、私はそれを投稿します – ayushk

関連する問題