首页 > 解决方案 > 在 @test 方法中处理其中一行失败时数据提供者的行为

问题描述

我是 TestNG 框架的新手。我打算使用 DataProvider 从 excel 表中传递表单值列表。

假设从 excel 工作表的列表中添加产品。当我使用数据提供者时,该@test方法将针对 Excel 工作表中的每一行运行吗?

当其中一行处理失败时会发生什么?失败后它会运行其余的行吗?失败时是否必须重新启动 selenium webdriver 和登录方法?我不想为每次失败重新启动 webdriver ..

即使浏览器关闭,我当前的应用程序也会保留会话。

标签: javaseleniumtestng

解决方案


问题@test当我使用数据提供者时,该方法将对 Excel 表中的每一行运行吗?

Ans : 是的,它将针对每组数据运行。这取决于您如何从 excel 文件中读取数据。

以此为例:

@DataProvider(name = "test1")
public Object[][] createData1() {
 return new Object[][] {
   { "Cedric", new Integer(36) },
   { "Anne", new Integer(37)},
 };

@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
 System.out.println(n1 + " " + n2);
}

verifyData1方法将运行两次,无论任何数据集如何,无论第一个是否失败

问:当其中一行处理失败时会发生什么?
Ans :该特定行的测试用例将失败,并且将通过从 excel 读取下一组数据继续执行。

:它是否会在此失败后运行其余行?
Ans :理想情况下它应该,现在又取决于你是否随身@AfterMethod携带。

:当 selenium webdriver 和 login 方法失败时,我是否必须重新启动它?

Ans :不。最好在 中初始化驱动程序@BeforeMethod,因为 before 方法将在 dataprovider 生成的每组数据之前运行。

希望这会有所帮助。


推荐阅读