我创建了TestNG的对象并用于执行测试用例。
if(parameters.getValue()。ExecutionType.equalsIgnoreCase(" Yes")){ //这个是来自excel文件,它被标记为测试用例名称的标志
package ForNewFramework;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.testng.TestListenerAdapter;
import org.testng.TestNG;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
public class CustomizeSuitetorunTestNG {
public static void main(String[] args) {
XmlSuite suite = new XmlSuite();
suite.setName("TmpSuite");
XmlTest test = new XmlTest(suite);
test.setName("TmpTest");
GetExcelInMap object = new GetExcelInMap();
try {
Map<String, SetterGetterOfExcelValue> SuitParameters = object.getExcel();
for(Map.Entry<String, SetterGetterOfExcelValue> parameters: SuitParameters.entrySet())
{
String ClassName = "ForNewFramework."+parameters.getValue().getTestCaseName();
if(parameters.getValue().ExecutionType.equalsIgnoreCase("Yes"))
{
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass(ClassName));
test.setXmlClasses(classes) ;
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
}
}
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
This my class which is running testng.
I am creating the object of this class "GetExcelInMap" where i am getting the data from excel and saved to the variables by using setter and getter method.
In Class CustomizeSuiterun:
I am running three classes from the package name "ForNewFramework", where the names of the classes and in excel both are same so i am loading the names of the classes from excel.
My testng.xml created like this in index.html:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TmpSuite">
<test name="TmpTest">
<classes>
<class name="ForNewFramework.ThirdTestCase"/>
</classes>
</test> <!-- TmpTest -->
</suite> <!-- TmpSuite -->
这里,我的第一次和第二次测试已经执行,但在报告中,只提到了最后执行的类。第三类和第一类的执行报告被第三类执行覆盖。
它完美地执行脚本。 我正在使用TestNG的默认报告,我没有得到所有已执行测试用例的报告,将Flag标记为&#34;是&#34;在excel中。 我只获取最后一个类文件的index.hmtl文件中的输出,该文件最后通过编程的TestNG执行。 您能否建议我如何获得所有在Flag中标记为Yes的测试用例的报告。
请告诉我,我能为您提供正确的代码或所需信息,以便您能够帮助我。
答案 0 :(得分:1)
我认为问题是你在添加课程后立即运行它。您需要添加所有类,然后在最后运行。所以正在发生的是它正在执行3个独立的xml套件。你需要在循环之外进行运行
if(parameters.getValue().ExecutionType.equalsIgnoreCase("Yes"))
{
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass(ClassName));
test.setXmlClasses(classes) ;
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
}
}
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
}
进行必要的更改,因为您必须在循环外声明套件。