2016-02-14 89 views
2

我試圖使用Testrail作爲測試用例管理系統,因此,將testrail與Jenkins集成在一起會很有用。註釋/提取/映射Testrail測試用例ID到本地Java TestNG測試(Jenkins Test Rail Integration)

這就是我想要達到的目標:

可以說,我在testrail手動創建三個測試例的情況下ID的 C1,C2和C3以及這些測試用例都會有一些獨特的自動化測試的名稱,如A1, A2和A3(更多信息,都會有testrail有這樣一個獨特的 信息的字段)

當我打「開始進行自動測試」按鈕,並運行testrail一個詹金斯作業(考慮到我已經實現UI腳本爲有這個按鈕的testrail):

UI script output

,我想運行一個腳本/一些需要選擇測試用例的案例ID並將這些ID臨時註釋到實際的Java測試中,以便它可以運行這些特定測試並將結果發回到Testrail。

方法我能想到的:

當我打「開始自動測試」按鈕Testrail,我可以做一個腳本來運行以創建一個XML文件,將包括來自Testrail的期望的選擇測試用例。這個XML將作爲Jenkins作業的默認輸入提供,它將運行XML文件中提到的測試用例。這個XML將是臨時的,每當從Testrail進行選擇時都會被替換。但是,你是如何做到的?我是Testrail的新手,並閱讀其API,並且看起來像API將結果發回Testrail是有用的。但是,我們如何實現ID的映射?

此外,任何建議發佈結果回到Testrail將是有益的。

+0

你是怎麼鏈接用詹金斯或項目開始你的開始按鈕? –

+0

@optimist_creeper在按鈕單擊事件上進行AJAX調用,這應該調用TestRail服務器上的文件。該文件可以是PHP或Python,其中包含Jenkins遠程構建運行的代碼。 –

回答

1

這不是特定於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 
} 

這mkyong鏈接給雙方創造一個註釋,並與反思閱讀它的一些非常基本的例子。這是我以前開始使用的: https://www.mkyong.com/java/java-custom-annotations-example/

如果您在代碼中開始測試運行,那麼您可以跟蹤測試運行ID並根據需要使用它。如果不是這樣,我的選擇是定義和設置使用詹金斯或其他腳本一些環境變量,你的代碼可以從這樣看,你不必處理文件繞過了一些非常基本的鍵值對