Urs*_*lek 5 java testng factory
我正在使用TestNG在Java中运行基于Selenium的测试.我有一堆重复的测试.通常,除测试名称和一个参数外,它们都是相同的.
我想自动生成它.我在考虑使用工厂.有没有办法生成不同名称的测试?最好的办法是什么?
至于现在我有类似下面的东西,我想创建像LinkOfInterestIsActiveAfterClick这样的10个测试
@Test(dependsOnGroups="loggedin")
public class SmokeTest extends BrowserStartingStoping{
public void LinkOfInterestIsActiveAfterClick(){
String link = "link_of_interest";
browser.click("*",link);
Assert.assertTrue(browser.isLinkActive(link));
}
}
Run Code Online (Sandbox Code Playgroud)
所以我将Factory与DataProvider连接起来并使用上下文的属性。
@DataProvider(name = "DP1")
public Object[][] createData() {
Object[][] retObjArr={
{"Link1","link_to_page"},
{"Link2","link_to_page"},
return retObjArr;
}
@Test (dataProvider = "DP1")
public void isActive(String name, String link){
this.context.setAttribute("name", name);
browser.click(link);
Assert.assertTrue(browser.isLinkActive(link));
}
Run Code Online (Sandbox Code Playgroud)
在监听器中
public class MyListener extends TestListenerAdapter{
@Override
public void onTestSuccess(ITestResult tr){
log("+",tr);
}
//and similar
private void log(String string, ITestResult tr){
List<ITestContext> k = this.getTestContexts();
String testName = tr.getTestClass().getName();
for (ITestContext i: k)
{
if (i.getAttribute("name") != null)
logger.info(testName+"."+i.getAttribute("name"));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3285 次 |
| 最近记录: |