轉自:http://qa.blog.163.com/blog/static/190147002201581634549893/
希望實現的場景:Jenkins中的Job可針對不同瀏覽器,不同環境,運行不同的測試用例集,但測試用例只保持一份。
具體實現的思路:在運行Jenkins Job時傳入參數,運行 mvn test 命令時把相應的參數帶上,最終影響被執行的測試用例。
下面看看是如何一步步實現的:
1、在TestNG的XML中設置參數。下 面的截圖中,我設了兩個參數,一個是testEnv,另一個是browser。參數的值可以直接寫死,也可以由外部傳入。參數有不同的作用域,如直接寫 在<suite>下,那他的作用域就是整個suite。如寫在<test>下,那他的作用域就是所在的test。

2、在測試代碼中使用參數。
如下所示,我是在beforeClass 方法中,根據傳入的兩個參數來初使化瀏覽器和load 相應環境的測試數據。

3、修改pom.xml文件

4、Jenkins job 傳入參數並執行mvn命令

下面是Maven命令:
mvn clean test -DtestEnv=%testEnv% -DxmlFileName=%xmlFileName%
執行這條命令時,我們把testEvn及xmlFileName兩個參數的值傳入了pom.xml文件,接着,Maven在調用TestNG時又會把參數傳過去。
經過如上四個步驟,我們可以通過參數傳遞,靈活的指定測試環境、測試范圍等,而不需要對測試腳本做任何改動。
這邊要講下
xmlFileName這個參數。因為考慮到要執行不同的用例集,比如只針對某一模塊進行自動化測試,或對項目所有的功能進行全面回歸,我們可以創建不同的TestNG XML文件,然后在執行mvn命令時指定你想要跑的那個XML文件。
該方法適用於所有使用Jenkins + Maven + TestNG的測試場景。