<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色综合久久免费分享| 免费看又爽又黄禁片视频1000| 亚洲字幕在线观看| 成人免费视频网址| 久久精品成人免费国产片小草 | 亚洲成a人片在线观看无码专区| 一级毛片免费毛片毛片| 亚洲AV综合色区无码另类小说 | 国产亚洲精品自在久久| 国产曰批免费视频播放免费s| 国产精品亚洲一区二区无码| 亚洲国产精品久久久久婷婷老年| 永久免费看bbb| 无码日韩精品一区二区免费暖暖| 亚洲国产精品成人午夜在线观看| 亚洲精品无码不卡在线播HE | 成全视频在线观看免费高清动漫视频下载| 国产精品亚洲а∨无码播放不卡| 亚洲另类激情综合偷自拍| 又爽又高潮的BB视频免费看| 最近中文字幕国语免费完整 | 在线观看亚洲电影| 亚洲最新永久在线观看| 国产成人亚洲精品影院| 成年女人午夜毛片免费看| 无码人妻AV免费一区二区三区| 野花视频在线官网免费1| 国产无遮挡吃胸膜奶免费看视频 | 日本无卡码免费一区二区三区| 99久久精品免费精品国产| 国产成人高清精品免费观看| 亚洲爆乳精品无码一区二区三区| 日韩高清在线免费看| 黄色网址免费观看| 免费精品99久久国产综合精品| 一级毛片成人免费看a| 亚洲第一成年网站视频| 亚洲人配人种jizz| 亚洲成人免费电影| 亚洲精品中文字幕麻豆| 亚洲一区二区在线免费观看|