我正在使用TestNG运行自动化测试。我们选择TestNG的原因是因为我们可以将变量输入发送到测试方法示例 public void testXX(String userId),并且userId可以针对每个测试进行更改。
下面的代码显示了我可以用来执行测试的三个不同的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) {
............
}
我现在遇到的问题是在某些条件下我只能使用一个userId,否则我的所有测试都会失败。我想保持完全相同的测试,但只传入userId而不是上面显示的三个。有一种方法可以配置TestNG在命令行上创建这个变量,所以有时我会使用三个定义的,但在另一个条件下它只会是三个中的一个或新的userId?
答案 0 :(得分:0)
当然,有很多方法可以做到这一点。如何在运行TestNG时传递系统属性?
java -Dfoo=bar org.testng.TestNG...
然后您的数据提供商可以使用foo
测试System.getProperty()
的值,并相应地调整它返回的内容。