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

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

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

    Sky's blog

    我和我追逐的夢(mèng)

    常用鏈接

    統(tǒng)計(jì)

    其他鏈接

    友情鏈接

    最新評(píng)論

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

    5.5 - Parameters

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

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

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

    在這個(gè)代碼中,我們明確指定java方法的參數(shù)“firstName”應(yīng)該接收名為“first-name”xml參數(shù)的值。 這個(gè)xml參數(shù)在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;
    }

    這次,兩個(gè)java參數(shù)ds和driver將分別接收被設(shè)置給屬性datasource和jdbc-driver的值。
    參數(shù)可以通過(guò)可選注解來(lái)聲明為可選:

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

    如果在testng.xml文件中沒(méi)有找到名為"db"的參數(shù),測(cè)試方法將接受在@Optional注解中指定的默認(rèn)值:"mysql"
    @Parameters 注解可以在下面位置使用:
        * 在任何有@Test, @Before/After或者@Factory注解的方法上
        * 在測(cè)試類的最多一個(gè)構(gòu)造函數(shù)上。這種情況下,當(dāng)TestNG需要實(shí)例化測(cè)試類時(shí),他將調(diào)用這個(gè)特別的帶有初始化為testng.xml中指定的值的參數(shù)的構(gòu)造函數(shù)。這個(gè)特性可以被用于初始化類內(nèi)部的值域?yàn)閷⒂糜跍y(cè)試方法的值。
        注意:
            * xml參數(shù)被以在注解中出現(xiàn)的相同順序映射到j(luò)ava參數(shù),如果參數(shù)數(shù)量不匹配testNG將發(fā)生錯(cuò)誤。
            * 參數(shù)是有范圍的。在testng.xml中,你可以在<suite>標(biāo)簽或者<test>標(biāo)簽下聲明參數(shù)。如果兩個(gè)參數(shù)同名,在<test>標(biāo)簽下定義的參數(shù)優(yōu)先。非常適用于這樣的場(chǎng)合:需要指定一個(gè)應(yīng)用于所有測(cè)試的參數(shù),但是又希望在特定測(cè)試用覆蓋它的值。

      5.5.2 - Parameters with DataProviders

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

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

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

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

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

    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):
    這里有一個(gè)同時(shí)適用于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);
    }

    如果將測(cè)試方法的第一個(gè)參數(shù)申明為java.lang.reflect.Method,TestNG將使用這個(gè)第一個(gè)參數(shù)來(lái)傳遞當(dāng)前測(cè)試方法。當(dāng)多個(gè)測(cè)試方法使用同一個(gè)@DataProvider而需要依當(dāng)前申請(qǐng)數(shù)據(jù)的方法而定來(lái)返回不同值時(shí)特別有用。
    舉例說(shuō)明,下面的代碼在@DataProvider中打印測(cè)試方法的名字:

    @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) {
    }

    將會(huì)顯示:
        test1
        test2

      5.5.3 - Parameters in reports

    被用于調(diào)用測(cè)試方法的參數(shù)將在TestNG生成的HTML報(bào)告中顯示。實(shí)例如下:

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

    主站蜘蛛池模板: 99久久99热精品免费观看国产| 亚洲成人免费电影| 亚洲男人天堂2018av| 亚洲五月综合缴情在线观看| 日韩一级视频免费观看| 中文字幕亚洲免费无线观看日本 | 日韩午夜免费视频| 88xx成人永久免费观看| 中文字幕久无码免费久久| 在线观看免费人成视频| A级毛片高清免费视频在线播放| 黄网站色视频免费看无下截| 亚洲色欲色欱wwW在线| 亚洲精品永久www忘忧草| 人人狠狠综合久久亚洲88| 亚洲精品国产福利一二区| 国产高清在线精品免费软件| 日韩免费a级毛片无码a∨| 久久精品一本到99热免费| 在线观看片免费人成视频无码| 日日摸夜夜添夜夜免费视频 | 免费电影在线观看网站| 13一14周岁毛片免费| 99久久精品国产免费| 午夜精品一区二区三区免费视频| 伊人免费在线观看高清版| 中文永久免费观看网站| 国产免费A∨在线播放| 一级黄色毛片免费看| 日韩久久无码免费毛片软件| 全部一级一级毛片免费看| 狠狠综合亚洲综合亚洲色| 大桥未久亚洲无av码在线| 亚洲免费网站观看视频| 国产永久免费高清在线| 又硬又粗又长又爽免费看 | 国产大片免费天天看| 香蕉免费在线视频| 三级网站免费观看| 国产精品白浆在线观看免费| 88xx成人永久免费观看|