我正在使用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?
如何将参数纳入此测试?
答案 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文件。