如何使用org.testng.TestNG将参数输入到此测试运行中?

时间:2018-06-06 13:10:01

标签: java selenium testng

我正在使用Java 8 Update 151& amp ;;测试Web客户端应用程序。硒3.8.1。和TestNG。我必须在已经运行的测试中开始一个测试。

这是我的代码:

ITestNGListener testListenerAdapter = null;
TestNG testNG = new TestNG();
testNG.addListener(testListenerAdapter);
testNG.setTestClasses(new Class[] { tests.login.LoginTest.class });
testNG.run();

我的测试使用testng.xml文件中定义的一组参数运行,但是这不会选择那些参数,这会导致测试失败。

这是我的testng.xml的顶部:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests">
    <parameter name="browser" value="firefox" />
    <parameter name="url" value="URL goes here!"/>
    <parameter name="printToFile" value="false" />
    <parameter name="trace" value="false" />
    <parameter name="opt" value="true" />
    <parameter name="customer" value="Demo" />
    <parameter name="network" value="NSG Designated Streets (Type 1/2)" />
    <parameter name="buildNo" value="312" />
    <listeners>
         <listener class-name="listeners.TestNGCustomReportListener" />
    </listeners>
    <test name="firefoxTest">
        <parameter name="browser" value="firefox" />
        <parameter name="url" value="URL goes here!" />
        <parameter name="printToFile" value="false" />
        <parameter name="trace" value="false" />
        <parameter name="opt" value="true" />
        <parameter name="customer" value="Demo" />
        <parameter name="network" value="NSG Designated Streets (Type 1/2)" />

我尝试在测试顶部添加@Parameters,如此处所示,但这不起作用。没有参数被选中。

public class AutoLogOutTest extends CrossBrowserTest {
@Parameters("url")
@Test(groups = { "all", "login", "simple" })
public void autoLogOut(@Optional("") String url) {

此处对此进行了描述,但不起作用,因为作者建议应该:http://toolsqa.com/selenium-webdriver/testng-parameters-data-provider/

由于某些原因,testng 6.4及更高版本不再支持方法内的参数:Is there a way to specify parameters for included methods in TestNG suite.xml?

如何将参数纳入此测试?

1 个答案:

答案 0 :(得分:0)

首先,您未在所提及的测试中的任何位置使用DataProvider。 其次你需要选择,无论是运行XML还是类文件,都不能同时运行。如果要使用XML参数,则需要使用XML文件,而不是LoginTest.class。

您可以像这样使用XML文件:

 XmlSuite suite = new XmlSuite();
 suite.setName("TmpSuite");
 XmlTest test = new XmlTest(suite);
 test.setName("TmpTest");
 List<XmlClass> classes = new ArrayList<XmlClass>();
 classes.add(new XmlClass("test.failures.Child"));
 test.setXmlClasses(classes) ;

然后你可以将这个XmlSuite传递给TestNG:

List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();

该类不像您启动TestNG那样了解XML文件。