因此,我有2个测试,一个用于检查注册的“ test01_signIn”,如果通过,则转到第二个测试“ test02_CheckNewsStandElements”,该测试检查主页元素的可见性,唯一的问题是第一个测试具有以下数据提供程序:
@Test(dataProvider = "Data")
public void test01_signIn(String idMedia, String nomMedia, String idSSO, String mdpSSO, String lien) {
//Test
}
@Test
public void test02_CheckNewsStandElements(){
WebDriverWait wait = new WebDriverWait(driver,5);
WebElement modalCloseButton = null;
modalCloseButton = nsp.modalCloseButton(driver);
try{
wait.until(ExpectedConditions.visibilityOf(modalCloseButton));
}catch(TimeoutException e){
System.out.println("The Element isn't visible");
}
}
@DataProvider(name="Data")
public Object [][] getLists() throws IOException, GeneralSecurityException {
Object [][] objects = newEDLI.importData().clone();
return objects;
}
我得到的结果更像是:测试1测试1测试1...测试2测试2测试2。当我正在寻找这样的结果时:Test1 Test2 Test 1 Test 2
[当您使用@DataProvider
将数据注入测试方法时,TestNg将连续运行此方法的次数是您拥有的数据的次数。此外,您的测试方法之间没有依赖关系。因此,您的test01_signIn
独立于test02_CheckNewsStandElements
执行。
您可以考虑使用@Factory
来组织执行顺序。在这种情况下,您可以将数据注入到测试类构造函数中(数据提供者应该是静态的),并且可以管理测试方法执行的顺序:
public class FactoryTest {
private String idMedia;
private String nomMedia;
// .. rest of your data
@Factory(dataProvider = "Data")
public FactoryTest(String idMedia, String nomMedia, ...) {
this.idMedia = idMedia;
this.nomMedia = nomMedia;
// set the rest of your fields
}
@DataProvider(name = "Data")
public static Object[] getList() {
return newEDLI.importData().clone();
}
@Test
public void test01_signIn() {
// use data from class members
}
@Test(dependsOnMethods = "test01_signIn")
public void test02_CheckNewsStandElements() {
WebDriverWait wait = new WebDriverWait(driver,5);
WebElement modalCloseButton = null;
modalCloseButton = nsp.modalCloseButton(driver);
try{
wait.until(ExpectedConditions.visibilityOf(modalCloseButton));
}catch(TimeoutException e){
System.out.println("The Element isn't visible");
}
}
}
注意:尽管将按照正确的顺序执行测试,但是在测试报告中仍将对它们进行分组和排序。