我没有通过程序化的TestNG获得所有执行的测试用例的报告

时间:2015-10-29 06:52:21

标签: selenium selenium-webdriver testng

我创建了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的测试用例的报告。

请告诉我,我能为您提供正确的代码或所需信息,以便您能够帮助我。

1 个答案:

答案 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();      
 }

进行必要的更改,因为您必须在循环外声明套件。

相关问题