使用数组作为测试方法的参数

时间:2018-07-03 15:09:09

标签: java selenium selenium-webdriver testng testng-dataprovider

测试方法的常用参数如下

 @Test //Test method (dataProvider="login")
public void TestCase1(String field1, String field2)
{
driver.findElement(By.xpath("//[@id='username']")).sendKeys(field1);
driver.findElement(By.xpath("//[@id='password']")).sendKeys(field2);
} 

结果为click on this image

我可以使用数组作为参数(String field1, String field2)而不是特定的(String[] fields)作为参数吗? (请参见下面的代码)

 @Test //Test method (dataProvider="login")
public void TestCase1(String[] fields)
{
driver.findElement(By.xpath("//[@id='username']")).sendKeys(field[0]);
driver.findElement(By.xpath("//[@id='password']")).sendKeys(field[1]);
} 

结果为click on this image

从结果看,格式方面略有不同。

我的问题是,这两种方法产生的含义相同吗?

3 个答案:

答案 0 :(得分:2)

显然有区别。

第一种方法是将 String 用作对象。

第二种方法是使用字符串数组。您需要了解数组 String 之间的基本区别。

您可以将数组称为容器,其中包含多个相同类型的对象/事物。而且数组显然具有固定的大小。

现在的数组可以是String类型,int类型等。

编写String field1时,这是单个String对象。

但是,当您编写String[] fields时,它是String对象的数组,这意味着它可以有多个String对象,并且您需要在初始化时声明大小。

尽管在您的方案中,两者都会产生相同的结果。话虽如此,您可以增加String[]的长度并可以使用fields[0], fields[1], fields[2], fields[4],依此类推。.

答案 1 :(得分:1)

这两种方法都会产生相同的结果。

但是,由于您似乎总是希望有两个参数,所以我认为使用两个单独的参数而不是数组更有意义。由于您可以确切知道每个参数的含义,因此可以提高可读性,并且可以强制任何调用函数传递适当数量的参数。

答案 2 :(得分:1)

这两种方法都应该起作用。第一个更具可读性(您还应该更改参数的名称)。 创建像LogIn这样的类也是一个好主意,该类具有用户名和密码作为字段,以便将来可以扩展或由需要此类信息的多个测试重用,为测试用户创建构建器,等等。