如何在TestNG中生成具有不同名称的测试? [英] How to generate tests with different names in TestNG?
问题描述
我正在使用TestNG在Java中运行基于Selenium的测试。我有一堆重复测试。通常,除了测试名称和一个参数外,它们都是相同的。
I'm using TestNG to run Selenium based tests in Java. I have a bunch of repeated tests. Generally, they do all the same except of test name and one parameter.
我想自动生成它。我在考虑使用工厂。有没有办法生成不同名称的测试?最好的方法是什么?
I want to automate generation of it. I was thinking about using factory. Is there a way to generate tests with different name? What would be the best approach to this?
现在我有类似下面的内容,我想创建10个测试,如LinkOfInterestIsActiveAfterClick
As for now I have something like below and I want to create 10 tests like LinkOfInterestIsActiveAfterClick
@Test(dependsOnGroups="loggedin")
public class SmokeTest extends BrowserStartingStoping{
public void LinkOfInterestIsActiveAfterClick(){
String link = "link_of_interest";
browser.click("*",link);
Assert.assertTrue(browser.isLinkActive(link));
}
}
- 我的XML套件是从Java代码自动生成的。
- 测试名称对于记录哪个链接处于活动状态以及哪个链接不活动至关重要。
推荐答案
所以我将Factory与DataProvider连接起来并使用了上下文的属性。
So I connected Factory with DataProvider and used attributes of contexts.
@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));
}
在监听器中
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"));
}
}
}
这篇关于如何在TestNG中生成具有不同名称的测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!