6

テストケース管理システムとして Testrail を使用しようとしているので、testrail を Jenkins と統合すると便利です。

これは私が達成したいことです:

ケース ID が C1、C2、C3 の 3 つのテスト ケースを testrail で手動で作成するとします。これらのテスト ケースには、A1、A2、A3 などの一意の自動テスト名がいくつかあります (詳細については、testrail に次のフィールドがあります)。そのようなユニークな情報)

「Start Automated Tests」ボタンを押して、testrail から Jenkins ジョブを実行すると (このボタンを持つ testrail 用の UI スクリプトを既に実装していることを考慮して):

UI スクリプト出力

、選択したテスト ケースのケース ID を取得し、それらの ID を実際の Java テストに一時的に注釈付けするスクリプト/何かを実行して、それらの特定のテストを実行し、結果を Testrail にポストできるようにしたいと考えています。

私が考えることができるアプローチ:

Testrail で [Start Automated Tests] ボタンをクリックすると、実行するスクリプトを作成して、Testrail から選択した必要なテスト ケースを含む XML ファイルを作成できます。この XML は、Jenkins ジョブへのデフォルトの入力として提供され、XML ファイルに記載されているテスト ケースを実行します。この XML は一時的なものであり、テストレールから選択が行われるたびに置き換えられます。しかし、どうやってそれをしますか?私は Testrail の初心者であり、その API を読みました。結果を Testrail にポストするのに API が役立つようです。しかし、どうやって ID のマッピングを達成するのでしょうか?

また、結果を Testrail に投稿する際のアドバイスも役に立ちます。

4

1 に答える 1

3

これは TestNG 固有のものではありませんが、Java でカスタム アノテーションを作成できます。テスト ID (add_result を使用)、またはケース ID と実行 ID (add_result_for_case を使用) の両方によって、API を介したテスト実行で TestRail テストを更新できます。http://docs.gurock.com/testrail-api2/reference-results

ケース ID は決して変更されないため、テストでこれらをハードコーディングするだけでかまいません。

この目的のために私が使用しているものは次のとおりです。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestData
{
    int testId() default 0;
    String[] tags() default "";
}

私のテスト方法は次のようになります(Junitを使用していますが、他のフレームワークとあまり変わらないはずです):

@Test
@TestData(
        testId = 177,
        tags = {"smoke", "authentication"}
)
public void testName()
{
    //Do the test
}

次に、JUnit 固有の方法を使用して、ティアダウン メソッドで使用するテスト メソッド名を取得しますが、それにはさまざまな方法があると確信しています。ここでテストメソッド名を取得したら、注釈の読み方を次に示します。

@After
public void baseTearDown() throws Exception
{
    //Good place to record test results
    Method testMethod = getClass().getMethod(testName);
    if(testMethod.isAnnotationPresent(TestData.class))
    {
        TestData testData = testMethod.getAnnotation(TestData.class);
        //Do something with testData.testId();
        System.out.println("Test ID = " + testData.testId());
    }

    //other cleanups
}

This mkyong link は、注釈の作成とリフレクションによる読み取りの両方の非常に基本的な例を示しています。これは私が始めたものです: https://www.mkyong.com/java/java-custom-annotations-example/

コードでテスト実行を開始する場合は、テスト実行 ID を追跡し、必要に応じて使用できます。そうでない場合、私の好みは、コードが読み取れる Jenkins またはその他のスクリプトを使用していくつかの環境変数を定義および設定することです。これにより、本当に基本的なキーと値のペアのファイルを渡す必要がなくなります。

于 2016-07-18T22:34:35.757 に答える