2012-07-09 48 views
0

我正在使用TestNG运行我们的自动化测试。我们选择TestNG的原因是因为我们可以将变量输入发送到测试方法示例public void testXX(String userId)并且userId可以针对每个测试进行更改。testng指定不同的用户

下面的代码显示了三个不同的userIds我可以用来执行我的测试。所以我的完全相同的测试将针对三个不同用户的每一个运行三次。这个功能非常棒,真正让我能够在不同的场景下进行多项测试,因为我们每个用户都拥有不同的配置文件。

// All valid Pricing Leads 
@DataProvider(name = "userIds") 
public Object[][] createPricingLeadUsersParameters() { 
    return new Object[][] { 
     { "TestUser001" }, 
     { "TestUser002" }, 
     { "TestUser003" } 
    }; 
} 

@Test(dataProvider = "userIds") 
public void createGroup(String userIds) { 
    ............ 
} 

我现在我遇到的问题是在一定的条件下,我只能用过一个用户id要不然我所有的测试将失败。我想保留我完全相同的测试,但只传入userId而不是上面显示的三个。有没有一种方法可以在命令行上配置TestNG来创建这个变量,所以有时我会使用这三个定义的,但在另一个条件下它只会是三个或一个新的userId中的一个?

回答

0

当然,有很多方法可以做到这一点。如何在运行TestNG时传递系统属性?

java -Dfoo=bar org.testng.TestNG... 

,然后你的数据提供者可以测试的fooSystem.getProperty()值并相应地调整其返回。

+0

我需要一种方法来设置userIds基于另一种配置。希望TestNG能够通过比较testng.xml和编程方式来控制这一点。感谢您的输入! – 2012-07-10 15:53:32