gpt4 book ai didi

java - Selenium TestNG 从 Excel 工作表传入参数

转载 作者:行者123 更新时间:2023-12-01 10:34:15 25 4
gpt4 key购买 nike

我正在创建一个功能测试,selenium 将充当在网站上注册帐户的用户,但是,网站注册有 16 个输入字段需要填写。一些 Int 值和一些 String。有更简单的方法吗?

 @Test(dataProvider = "Reg")
public void login(String sUsername, String sPassword, String sMemorableWord) {

我只在那里传递 3 个值,但完成完整的 reg 测试后,将有 16 个字符串或 Int 参数。这将是一个巨大的 list ,还有其他方法吗?

最佳答案

有一种更简单的方法可以做到这一点。如果将测试的所有参数放在单个 Excel 电子表格行中,则只需将所有参数读取到单个对象中即可。然后,在您的数据提供程序中,返回包含所有这些参数的单个对象。

@Test(dataProvider = "Reg")
public void login(WebDriver drvInstance, HashMap params) {

我以前就是这么做的。然后,在数据提供程序中,我只需为每个测试创建新的驱动程序实例,并收集一个对象中的所有参数,然后返回这两项。另外,我使用 Apache MetaModel 来读取电子表格。

在您的数据提供程序中,执行以下操作:

@DataProvider(name = "test1")
public Object[][] prepareTestData() {
Object[][] vals = new Object[columns][rows];
for each row in spreadsheet {
get rows from spreadsheet into a hashmap
create new Capabilities object from hashmap values
create webdriver from capabilities
add driver and hashmap to object[][]
}
return vals;
}

您可能没有意识到这一点的美妙之处在于,您也可以从配置的 @BeforeMethod 阶段访问您传递回方法的这 2 个参数。 JUnit 无法做到的事情。此外,通过这种方式,TestNG 可以处理多个浏览器实例的线程。

此外,Rudziankoŭ 有一个观点。您可以在 dataprovider 方法中使用 Builder 模式来构造对象,但我会在您让它正常工作后才这样做。

关于java - Selenium TestNG 从 Excel 工作表传入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com