【问题标题】:Behaviour of dataprovider when one of the row is failed to process in @test method在 @test 方法中处理其中一行失败时数据提供者的行为
【发布时间】:2018-07-31 04:51:34
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java selenium testng


    【解决方案1】:

    问题:当我使用数据提供者时,@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 方法将运行 两次 次,无论任何数据集如何,无论第一个是否失败。

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

    问。它会在这次失败后运行其余的行吗?
    回答:理想情况下应该如此,现在再次取决于您是否有@AfterMethod和你在一起与否。

    问。 selenium webdriver 和登录方法失败时是否需要重新启动?

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

    希望这会有所帮助。

    【讨论】:

    • 好详细的答案\
    • cruisepandey - “现在再次取决于你是否有 AfterMethod。” - 你能告诉我在@AfterMethod 下应该使用什么,以便执行 dataprovider 下的所有数据,而不管之前的通过/失败如何?
    • 是的,我知道了问题背后的原因。 TestNG 的默认行为(运行 dataprovider 的所有数据)在框架中被覆盖。这就是失败时执行停止的原因。
    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多