如何为每个测试标签生成具有不同参数值的动态TestNG.xml

以下代码用于生成动态testng.xml。有三个公司A,B,C,它们是每个测试标签的参数,但是正在为所有三个测试标签添加参数A。如何解决呢?我需要生成XML,这样一个测试标签应具有参数值A,第二个测试标签应具有参数值B,第三个测试标签应具有参数值C。

public class TestRunner {
    public static void main(String[] args) {
        List < String > companyNamesParameters = new ArrayList < >();
        BufferedReader br = null;

        try {
            br = new BufferedReader(new FileReader("C:\\CompanyNames\\CompanyNames.txt"));
            String line;
            while ((line = br.readLine()) != null) {
                companyNamesParameters.add(line);
            }
        } catch(IOException e) {
            e.printStackTrace();
        }

        XmlSuite xmlSuite = new XmlSuite();
        xmlSuite.setName("ParallelSuite");
        xmlSuite.setVerbose(1);
        xmlSuite.setParallel(XmlSuite.ParallelMode.TESTS);
        xmlSuite.setThreadCount(companyNamesParameters.size());

        //for class tag 
        XmlClass newClaimClass = new XmlClass(SampleTests.class);
        List < XmlClass > xmlClassList = new ArrayList < XmlClass > ();
        xmlClassList.add(newClaimClass);

        Map < String,String > companyName = new HashMap < String,String > ();
        List < XmlTest > testList = new ArrayList < XmlTest > ();

        //for loop to generate the xml 
        for (int i = 0; i < companyNamesParameters.size(); i++) {
            testList.add(i,new XmlTest(xmlSuite));
            testList.get(i).setName("TestCase" + i);
            testList.get(i).setParallel(XmlSuite.ParallelMode.NONE);
            testList.get(i).setThreadCount(1);
            testList.get(i).setXmlClasses(xmlClassList);
            System.out.println("Company name  is " + companyNamesParameters.get(i));
            companyName.put("CompanyName",companyNamesParameters.get(i));
            testList.get(i).setParameters(companyName);
        }

        //to generate the xml suite
        TestNG testng = new TestNG();
        List < XmlSuite > xmlSuiteList = new ArrayList < XmlSuite > ();
        xmlSuiteList.add(xmlSuite);
        testng.setXmlSuites(xmlSuiteList);

        // write the generated code in .xml file 
        FileWriter writer;
        try {
            writer = new FileWriter(new File("TestRunner.xml"));
            writer.write(((XmlSuite) xmlSuite).toXml());
            writer.flush();
            writer.close();
            System.out.println(new File("TestRunner.xml").getabsolutePath());
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

生成的TestNG.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="3" name="ParallelSuite" parallel="tests">
    <test thread-count="1" name="TestCase0">
        <parameter name="CompanyName" value="A"/>
        <classes>
            <class name="SampleTests"/>
        </classes>
    </test>
    <!-- TestCase0 -->
    <test thread-count="1" name="TestCase1">
        <parameter name="CompanyName" value="A"/>
        <classes>
            <class name="SampleTests"/>
        </classes>
    </test>
    <!-- TestCase1 -->
    <test thread-count="1" name="TestCase2">
        <parameter name="CompanyName" value="A"/>
        <classes>
            <class name="SampleTests"/>
        </classes>
    </test>
</suite> 

在上述XML文件中,所有测试标签中的值均为A,而不是A,B,C。

owenggq 回答:如何为每个测试标签生成具有不同参数值的动态TestNG.xml

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3145174.html

大家都在问