所以我有使用TestNG测试用户界面的Selenium测试,但是现在我正在努力解决问题:如何在参数化测试之前执行特定方法一次? 我有一个像这样的参数化测试:
@Test(dataProvider="myProvider")
public void testMyThingToTest() {
// Things to test in here
}
我的参数化测试效果很好,并且对于给定的每个参数执行一次。现在我的初始化对我的参数化测试的所有实例都是通用的,所以我希望它只运行 ,而不是参数化测试的每个实例之前... 如果我喜欢使用@BeforeTest或@BeforeMethod:
@BeforeMethod
public void initialization() {
// The initialization phase here...
}
init方法在每次测试之前运行...任何想法如何实现? 这样做的目的是避免为每个参数做一些压倒性的工作,因为我的初始化需要30秒,我的测试有7-8个参数,所以我宁愿初始化时间 30sec * 1 而不是 30秒* 8
答案 0 :(得分:2)
如果我理解正确,您只想对测试类中的所有测试执行一次方法。
TestNG为@BeforeClass
提供注释:注释在运行当前测试类的第一个方法之前运行的方法。
您可以在http://java.dzone.com/articles/testng-beforeclass-annotation
找到示例答案 1 :(得分:1)
尝试
@BeforeSuite
public void initialization() {
// Init suite
}
如果您想要其他方案。选择具有以下优先级的注释: @BeforeSuite> @BeforeTest> @BeforeClass> @BeforeMethod
答案 2 :(得分:1)
在dataprovider中调用函数
@DataProvider
public Object[][] FeederOfResponseCodes()
{
initialization();
return new Object[][]
{
};
}