问题 是否可以在setUp方法中使用TestNG数据提供程序参数?


我有一些需要使用数据提供程序参数完成的init语句,并且希望访问数据提供程序参数值 @BeforeMethod 设置方法。这可能吗?


10467
2017-08-07 13:20


起源



答案:


是的,它完全有可能。在里面 @BeforeMethod  注释方法,你可以传递一个Object []的可选内置参数,它基本上是传递给它的参数的副本。 @Test 方法。在我的情况下,我将2个args传递给我的测试方法:

@Test(dataProvider="provider")
public void doTest( TestHelper testHelper, Map<String,String> paramMap ) {
   ....

所以,像这样(它不需要是工厂DataProvider):

@BeforeMethod
public void setUp( Object[] testArgs ) {
    Map<String,String> paramMap = (Map<String, String>)testArgs[1];
    TestHelper testHelper = testArgs[0];
    String testName = paramMap.get( "testCaseName" );
    log.logTcStep( "Test case name: " + testName );
    log.setLogTcName( testName );
    testHelper.setTestName( testName );
    testHelper.setTagsByString( paramMap.get( "browser" ) );
    testHelper.setBuildNumber( paramMap.get( "environment" ) );
}

16
2017-10-10 15:14



非常感谢@djangofan。你救了我的一天! - Vel Ganesh
不要低估TestNG的威力! - djangofan
@djangofan - 谢谢。我正在使用这个答案来准备我的测试。但是,有一个新的障碍。能否请你帮忙 ? stackoverflow.com/questions/52575316/... - testerjoe2


答案:


是的,它完全有可能。在里面 @BeforeMethod  注释方法,你可以传递一个Object []的可选内置参数,它基本上是传递给它的参数的副本。 @Test 方法。在我的情况下,我将2个args传递给我的测试方法:

@Test(dataProvider="provider")
public void doTest( TestHelper testHelper, Map<String,String> paramMap ) {
   ....

所以,像这样(它不需要是工厂DataProvider):

@BeforeMethod
public void setUp( Object[] testArgs ) {
    Map<String,String> paramMap = (Map<String, String>)testArgs[1];
    TestHelper testHelper = testArgs[0];
    String testName = paramMap.get( "testCaseName" );
    log.logTcStep( "Test case name: " + testName );
    log.setLogTcName( testName );
    testHelper.setTestName( testName );
    testHelper.setTagsByString( paramMap.get( "browser" ) );
    testHelper.setBuildNumber( paramMap.get( "environment" ) );
}

16
2017-10-10 15:14



非常感谢@djangofan。你救了我的一天! - Vel Ganesh
不要低估TestNG的威力! - djangofan
@djangofan - 谢谢。我正在使用这个答案来准备我的测试。但是,有一个新的障碍。能否请你帮忙 ? stackoverflow.com/questions/52575316/... - testerjoe2


不,那里没有。

正确的方法是使用@Factory并为每组数据创建测试类的实例,如下所述: https://groups.google.com/forum/#!topic/testng-users/3Kny3qTVdmg


-1
2017-08-07 14:20



是的,你可以像@djangofan一样写 - SelenUser