<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sky's blog

    我和我追逐的夢

    常用鏈接

    統計

    其他鏈接

    友情鏈接

    最新評論

    TestNG官方文檔中文版(6)-參數

    5.5 - Parameters

    測試方法不要求是無參數的。你可以在每個測試方法上使用任意數量的參數,并指示testNG傳遞正確的參數。
    有兩種方式用于設置參數:使用testng.xml或者編程式。

      5.5.1 - Parameters from testng.xml
    如果你要為你的參數使用簡單值,你可以在你的testng.xml中明確指定:

    @Parameters({ "first-name" })
    @Test
    public void testSingleString(String firstName) {
      System.out.println(
    "Invoked testString " + firstName);
      
    assert "Cedric".equals(firstName);
    }

    在這個代碼中,我們明確指定java方法的參數“firstName”應該接收名為“first-name”xml參數的值。 這個xml參數在testng.xml中定義:


    <suite name="My suite">
      
    <parameter name="first-name"  value="Cedric"/>
      
    <test name="Simple example">
      
    <--  -->

    同樣的方法可以用于注解@Before/After和@Factory:

    @Parameters({ "datasource""jdbcDriver" })
    @BeforeMethod
    public void beforeTest(String ds, String driver) {
      m_dataSource 
    = ;                              // look up the value of datasource
      m_jdbcDriver = driver;
    }

    這次,兩個java參數ds和driver將分別接收被設置給屬性datasource和jdbc-driver的值。
    參數可以通過可選注解來聲明為可選:

    @Parameters("db")
    @Test
    public void testNonExistentParameter(@Optional("mysql") String db) {  }

    如果在testng.xml文件中沒有找到名為"db"的參數,測試方法將接受在@Optional注解中指定的默認值:"mysql"
    @Parameters 注解可以在下面位置使用:
        * 在任何有@Test, @Before/After或者@Factory注解的方法上
        * 在測試類的最多一個構造函數上。這種情況下,當TestNG需要實例化測試類時,他將調用這個特別的帶有初始化為testng.xml中指定的值的參數的構造函數。這個特性可以被用于初始化類內部的值域為將用于測試方法的值。
        注意:
            * xml參數被以在注解中出現的相同順序映射到java參數,如果參數數量不匹配testNG將發生錯誤。
            * 參數是有范圍的。在testng.xml中,你可以在<suite>標簽或者<test>標簽下聲明參數。如果兩個參數同名,在<test>標簽下定義的參數優先。非常適用于這樣的場合:需要指定一個應用于所有測試的參數,但是又希望在特定測試用覆蓋它的值。

      5.5.2 - Parameters with DataProviders

    在testng.xml中指定參數,對于以下情況是不夠的:
        * 不使用testng.xml
        * 需要傳遞復雜參數,或者參數需要從java中創建(復雜對象,從屬性文件或者數據庫中讀取的對象)在這種情況下,你可以使用Data Provider來提供你測試需要的數值。Data Provider是類中的一個返回對象數組的數組的方法。這個方法帶有@DataProvider注解:

    //這個方法將提供數據給任何聲明它的Data Provider名為"test1"的測試方法
    @DataProvider(name = "test1")
    public Object[][] createData1() {
     
    return new Object[][] {
       { 
    "Cedric"new Integer(36) },
       { 
    "Anne"new Integer(37)},
     };
    }

    //這個方法聲明它的數據將由名為"test1"的Data Provider提供
    @Test(dataProvider = "test1")
    public void verifyData1(String n1, Integer n2) {
     System.out.println(n1 
    + " " + n2);
    }

    將打印
        Cedric 36
        Anne 37
    @Test方法用dataProvider屬性來指定它的Data Provider。這個名字必須符合同一個類中用@DataProvider(name="...")注解的方法,它們要使用同一個匹配的名字。
    默認,將在當前類或者它的基類中查找data provider。如果你想將data provider放置到另一個類中,需要將這個data provider方法設置為靜態方法,并在dataProviderClass屬性中指定在哪個類中可以找到這個方法。

    public static class StaticProvider {
      @DataProvider(name 
    = "create")
      
    public static Object[][] createData() {
        
    return new Object[][] {
          
    new Object[] { new Integer(42) }
        }
      }
    }

    public class MyTest {
      @Test(dataProvider 
    = "create", dataProviderClass = StaticProvider.class)
      
    public void test(Integer n) {
        
    // 
      }
    }

    Data Provider方法將返回下面兩個類型中的一種:
    The Data Provider method can return one of the following two types:
        * 對象數組的數組(Object[][]) ,外圍數據的大小是測試方法將被調用的次數,而內層數組的大小和類型必須和測試方法的參數列表匹配。如同上面舉例說明的。
        * <Object[]>的Iterator,和Object[][]的唯一差別在于Iterator容許延遲創建測試數據。testNG將一個接一個的調用iterator,再用iterator返回的參數調用測試方法。如果有很多參數集合需要傳遞給方法而又不想一開始就創建所有參數,會非常有用。

    Here is an example of this feature for both JDK 1.4 and JDK5 (note that the JDK 1.4 example does not use Generics):
    這里有一個同時適用于JDK 1.4和JDK5的例子(注意JDK 1.4的例子不使用注解):

    /**
     * @testng.data-provider name="test1"
     
    */
    public Iterator createData() {
      
    return new MyIterator(DATA);
    )

    @DataProvider(name 
    = "test1")
    public Iterator createData() {
      
    return new MyIterator(DATA);
    }

    如果將測試方法的第一個參數申明為java.lang.reflect.Method,TestNG將使用這個第一個參數來傳遞當前測試方法。當多個測試方法使用同一個@DataProvider而需要依當前申請數據的方法而定來返回不同值時特別有用。
    舉例說明,下面的代碼在@DataProvider中打印測試方法的名字:

    @DataProvider(name = "dp")
    public Object[][] createData(Method m) {
      System.out.println(m.getName());  
    // print test method name
      return new Object[][] { new Object[] { "Cedric" }};
    }

    @Test(dataProvider 
    = "dp")
    public void test1(String s) {
    }

    @Test(dataProvider 
    = "dp")
    public void test2(String s) {
    }

    將會顯示:
        test1
        test2

      5.5.3 - Parameters in reports

    被用于調用測試方法的參數將在TestNG生成的HTML報告中顯示。實例如下:

    posted on 2008-09-02 16:53 sky ao 閱讀(3309) 評論(0)  編輯  收藏 所屬分類: software test

    主站蜘蛛池模板: 人妻免费久久久久久久了| 91制片厂制作传媒免费版樱花| 久久水蜜桃亚洲av无码精品麻豆| 国产在线观看免费完整版中文版| 久久ww精品w免费人成| 免费精品国产自产拍在线观看| 99久久婷婷国产综合亚洲| 无码欧精品亚洲日韩一区| 亚洲区小说区图片区| 日韩高清免费观看| 又黄又爽又成人免费视频| 久久久久久久岛国免费播放 | 97久久免费视频| a级黄色毛片免费播放视频| 免费在线观看亚洲| 久久久久久久久无码精品亚洲日韩 | 亚洲毛片无码专区亚洲乱| 久久精品国产亚洲| 亚洲桃色AV无码| 亚洲中文字幕无码一区| 亚洲精品国精品久久99热| 四虎影在线永久免费观看| 成人永久福利免费观看| 四虎影视大全免费入口| 成人毛片免费观看视频大全| 在线看片无码永久免费视频| 亚洲精品在线免费观看视频| 亚洲视频在线免费观看| 97精品免费视频| 在线永久免费的视频草莓| 色影音免费色资源| 成人黄18免费视频| 狼友av永久网站免费观看 | 亚洲中文字幕久久精品无码A| 亚洲一区二区三区国产精品无码| 亚洲精品视频在线免费| 亚洲精品中文字幕麻豆| 亚洲精品伊人久久久久| 中文字幕无码亚洲欧洲日韩| 亚洲人成欧美中文字幕| 黄色a级免费网站|