2016-09-02 2 views
0

私は、Jenkins上でSelenium Gridが管理するいくつかのSelenium NodesでいくつかのSelenium Testsを実行しています。報告のために、私はAllure Pluginを使用します。その後、テストが実行されているセレンノードを確認することは困難です(現在、私はステップ情報でこれを行いますが、最初にテストの詳細をクリックする必要があります)。Allureタイムラインを変更して、各Seleniumノードに異なるタイムラインを表示することはできますか?

Allure Reportのタイムラインを変更して、実行中のJenkinsマスターの下にすべてのテストを表示するのではなく、各Seleniumノードに異なるタイムラインを設定することをお勧めします。私はこれを行う方法やタイムラインが生成された場所を見つけられなかったので、これが可能かどうかを尋ねています。あるいは、テストブラウザがどのノードで実行されたかを明確にする方法は他にもありますか?

+0

タイムラインにスレッドごとに実行されたテストが記載されていると思います。私が間違っているなら私を訂正してください。 – Thibstars

答えて

1

実際にタイムラインページのタイトルを変更することは可能です。複数のタイトルを持つことも可能です。

各テストケースについて、ファイルが作成されます。 Test Case descriptionセクションにはラベルがあります。ラベルは複数の名前で作成することができますが、タイムラインのためにあなたが探しているものに影響2があります

タイトルバーがあり、それぞれ見つかったホストの
  • スレッド
  • ホスト

発見された固有のスレッドごとにスレッド行が生成されます。そのスレッドを持つすべての見つかったテストケースに対して、テストケースの期間中ブロックが追加されます。

テストケース部分は、XMLファイルに次のようになります。

<test-case severity="None" start="1483868031834" status="passed" stop="1483868031840"> 
    <description>Test 1</description> 
    <name>Test 1</name> 
    <labels> 
    <label name="thread" value="28216"/> 
    <label name="host" value="Apple"/> 
    </labels> 
    <attachments/> 
    ... 

ファイルの残りの部分は、私はあなたがすでに精通していると考えている手順を、含まれています。

- 編集 -

あなたはCustomTestCaseEventは(おそらくこれを行うにはよりエレガントな方法がある)は、次のようになります

Allure.LIFECYCLE.fire(new CustomTestCaseEvent(host)); 

を呼び出すことにより、これを実装することができます

public class CustomTestCaseEvent implements TestCaseEvent { 
final private String host; 
public CustomTestCaseEvent(final String host) { 
    this.host = host; 
} 
@Override 
public void process(final TestCaseResult context) { 
    for (final Label label : context.getLabels()) { 
     if ("host".equals(label.getName())) { 
      label.setValue(host); 
     } 
    } 
} 
} 
+0

ありがとう!あなたの答えによって動機づけられました私は再びコードを見て、私が望むようにタイムラインを変更することができました!あなたは'Allure.LIFECYCLE 'に' TestCaseEvent 'を発し、ホストのラベル値を更新するだけです。 – andi17

関連する問題