0

我正在创建一个使用带有 TestNG 的 POM 结构的 Selenium 框架。我正在使用@DataProvider注释将值传递给@Test.

我的问题是,如果@Test需要在以后的@Test方法中使用一种方法的输出,那么我将如何做到这一点,因为使用数据提供者我只能传递它包含的值。

4

2 回答 2

0

OP 没有提到语言或需要并行执行,因此可以使用静态变量轻松解决。在 Java 中,下面应该打印 pass:

public static int outputOfMethodA=0;

@Test
   methodA(){
   outputOfMethodA=outputOfMethodA+1;
}

@Test
methodB(){
   if(outputOfMethodA=1){
   System.out.println("pass!");
   }
   else{system.out.println("fail!")
   }
}
于 2017-02-03T13:52:18.223 回答
-1

他的意思是 POM 是为他的 WebElements 映射的页面对象模型类型。

松散地耦合您的测试方法始终是一个好习惯(因此一个@Test 的结果不应依赖于另一个@Test)。

如果您想实现它:@DataProvider 可以用于您在测试类中拥有的任意数量的@Test 方法。只需定义一个类级别的 Map 并在您的测试中使用它。

样本:

TestingClass{

// define global variable
Map<String,String> resultMap=new HashMap<String, String>();

@DataProvider
public Object{

// some logic for dataProvider
}
@Test(dataProvider="dp")
method1(){

//  your logic
// then put your final result to be used by method2 into appropriate obj               

 resultMap.put("key","value");// assign result to defined global variable

  }

  @Test(dataProvider="dp")
  method2(){

  // use the resultMap to take results from previous method.

  }


  }
于 2017-02-02T21:51:46.453 回答