对数据提供者的一次迭代运行所有测试,依此类推,直到数据提供者中的数据结束

时间:2017-11-24 11:26:24

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

实际上数据提供商有日期和品牌名称,所以我的第一个@test只能选择日期和品牌名称然后在第二个@test它将获取相同日期和品牌名称的数据,并在第二次迭代首先@test采取第二个日期和来自@dataprovider的第二个品牌名称,然后是第二个@test将做自己的工作等等,请帮助我 提前致谢。 示例如下:

`@DataProvider
  public static Object[][] dp() {
    return new Object[][] {
      new Object[] { "23", "Online" },
      new Object[] { "24", "Online" },
    };
  }
@Test(dataProvider = "dp")
  public void DateAndBrand(String date,String game) throws InterruptedException{
System.out.println(date"  "+game)
}
@Test
  public void CheckDifference(){
System.out.println("in second Test");
} 

我希望输出类似:

23  Online 
in second Test
24  Online
in second Test

我的testng.xml文件如下:

<suite name="Automation" parallel="false">
<test name="Data Difference">
<classes>
 <class name="monitoring.DataCompareAuto">
  <methods>
        <include name="DateAndBrand"/>
        <include name="CheckDifference" />
    </methods>
  </class>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

1 个答案:

答案 0 :(得分:0)

每当我们使用带有@Test注释的 dataProvider 属性时,该方法被称为@DataProvider返回的数组中对象数的次数。

要获得您所引用的输出,您可以使用 ITestListener 界面或 TestListenerAdapter 类。

使用这些监听器,您可以在开始,成功,失败等方面拦截每个测试方法。您可以在那里执行任何操作。

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

public class TestInterceptor implements ITestListener {
    @Override
    public void onFinish(ITestContext arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onStart(ITestContext arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestFailure(ITestResult arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestSkipped(ITestResult arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestStart(ITestResult arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onTestSuccess(ITestResult arg0) {
        System.out.println(" Can perform CheckDifference operation here.");

    }

}

所以在这种情况下你的输出将是

23  Online
 Can perform CheckDifference operation here.
24  Online
 Can perform CheckDifference operation here.
in second Test
 Can perform CheckDifference operation here.

请记住在testng.xml文件中添加侦听器