Java 如何将动态参数传递给testNG.xml运行多个测试
我有一个xml套件,它可以发送多个测试和多个参数 例如:Java 如何将动态参数传递给testNG.xml运行多个测试,java,testng,testng.xml,Java,Testng,Testng.xml,我有一个xml套件,它可以发送多个测试和多个参数 例如: <test name="Create"> <classes> <class name="TestClass"> <methods> <parameter name="offerId" value="1234"/> &l
<test name="Create">
<classes>
<class name="TestClass">
<methods>
<parameter name="offerId" value="1234"/>
<include name="testmethod"/>
</methods>
</class>
</classes>
</test>
<test name="Add">
<classes>
<class name="TestClass2">
<methods>
<include name="testmethod2"/>
</methods>
</class>
</classes>
</test>
在这种情况下,您可以使用dataprovider,也可以从excel中读取值,并对dataprovider/excel表中的每个值运行测试。
为您提供一个关于如何在测试用例中使用dataprovider的示例
@DataProvider(name = "offerId")
public static Object[][] voiceSearchTestData() {
return new Object[][]{
{1234},
{2345},
{4567}
};
}
@Test(dataProvider = "offerId")
public void testmethod(int offerId, ITestContext context) throws Exception {
Reporter.log("offer ID is = " + offerId, true);
}
因此,上面的测试将运行3次,数据提供程序中存在的每个值一次,并且您不需要对testng xml中的任何内容进行参数化。您只需提及类名,所有测试都将自动运行。testng.xml应该类似于:
<test name="SampleTest">
<classes>
<class name="packageName.className" />
</classes>
</test>
在这种情况下,您可以使用dataprovider,也可以从excel中读取值,并对dataprovider/excel表中的每个值运行测试。
为您提供一个关于如何在测试用例中使用dataprovider的示例
@DataProvider(name = "offerId")
public static Object[][] voiceSearchTestData() {
return new Object[][]{
{1234},
{2345},
{4567}
};
}
@Test(dataProvider = "offerId")
public void testmethod(int offerId, ITestContext context) throws Exception {
Reporter.log("offer ID is = " + offerId, true);
}
因此,上面的测试将运行3次,数据提供程序中存在的每个值一次,并且您不需要对testng xml中的任何内容进行参数化。您只需提及类名,所有测试都将自动运行。testng.xml应该类似于:
<test name="SampleTest">
<classes>
<class name="packageName.className" />
</classes>
</test>
以下代码的作用: 我想在运行时为每个参数添加一个参数列表。这些参数作为maven运行时参数传递。使用如下所示的
System.getProperty()
方法读取它们。然后将这些参数添加到
内部的
中,并成功运行testng。这在其他场景中也非常有用
下面的代码读取testng.xml文件并将参数添加到
List<String> parameters = new ArrayList<>();
parameters = Arrays.asList(System.getProperty("parameters").split(",");
TestNG tng = new TestNG();
File initialFile = new File("testng.xml");
InputStream inputStream = FileUtils.openInputStream(initialFile);
Parser p = new Parser(inputStream);
List<XmlSuite> suites = p.parseToList();
for(XmlSuite suite:suites){
List<XmlTest> tests = suite.getTests();
for (XmlTest test : tests) {
for (int i = 0; i < parameters.size(); i++) {
HashMap<String, String> parametersMap = new HashMap<>();
parametersMap.put("parameter",parameters.get(i));
test.setParameters(parametersMap);
}
}
}
tng.setXmlSuites(suites);
tng.run();
List parameters=new ArrayList();
parameters=Arrays.asList(System.getProperty(“参数”).split(“,”);
TestNG tng=新的TestNG();
File initialFile=新文件(“testng.xml”);
InputStream InputStream=FileUtils.openInputStream(初始文件);
Parser p=新的解析器(inputStream);
List suites=p.parsetList();
用于(XmlSuite:suites){
List tests=suite.getTests();
for(XmlTest测试:测试){
对于(int i=0;i
以下代码的作用:
我想在运行时为每个参数添加一个参数列表。这些参数作为maven运行时参数传递。它们使用System.getProperty()读取
方法,如下所示。然后将这些参数添加到
内部
,并成功运行testng。这在其他场景中也非常有用
下面的代码读取testng.xml文件并将参数添加到
List<String> parameters = new ArrayList<>();
parameters = Arrays.asList(System.getProperty("parameters").split(",");
TestNG tng = new TestNG();
File initialFile = new File("testng.xml");
InputStream inputStream = FileUtils.openInputStream(initialFile);
Parser p = new Parser(inputStream);
List<XmlSuite> suites = p.parseToList();
for(XmlSuite suite:suites){
List<XmlTest> tests = suite.getTests();
for (XmlTest test : tests) {
for (int i = 0; i < parameters.size(); i++) {
HashMap<String, String> parametersMap = new HashMap<>();
parametersMap.put("parameter",parameters.get(i));
test.setParameters(parametersMap);
}
}
}
tng.setXmlSuites(suites);
tng.run();
List parameters=new ArrayList();
parameters=Arrays.asList(System.getProperty(“参数”).split(“,”);
TestNG tng=新的TestNG();
File initialFile=新文件(“testng.xml”);
InputStream InputStream=FileUtils.openInputStream(初始文件);
Parser p=新的解析器(inputStream);
List suites=p.parsetList();
用于(XmlSuite:suites){
List tests=suite.getTests();
for(XmlTest测试:测试){
对于(int i=0;i
能否添加使用offerId参数的testMethod代码?添加了java测试@SameerArorap请参考此内容并遵循@IdanShabat让我知道答案是否对您有帮助:)hi@SameerArora-感谢您的输入,但这没有帮助。它确实从属性文件运行了测试,但我需要在同一参数上多次运行同一测试。当我向同一参数添加不同的值时,它使用了最新的值,并且没有运行两次。您可以在其中添加使用offerId参数的testMethod代码吗?添加了java测试@Sameerrorap请参考并遵循@IdanShabat让我知道答案是否对您有帮助:)嗨@Sameerrora-感谢您的输入,但这没有帮助。它确实从属性文件运行了测试,但我需要在同一参数上多次运行同一测试。当我向同一个参数添加不同的值时,它使用了最新的值,并且没有运行两次。谢谢你的回答。这样我就可以多次运行同一个测试,但是有没有一种方法可以运行整个测试,运行整个测试,而不仅仅是参数?我在同一套衣服上有多个测试,所以我希望它:1.开始运行衣服-运行一些测试。2.当它到达desire类(test)时,使用第一个参数。3.继续穿西装,运行更多参数。4.返回第一步,再次运行它——直到listHi@Sameer-Arora上没有更多的参数。谢谢你的回答。这样我就可以多次运行同一个测试,但是有没有一种方法可以运行整个测试,运行整个测试,而不仅仅是参数?我在同一套衣服上有多个测试,所以我希望它:1.开始运行衣服-运行一些测试。2.当它到达desire类(test)时,使用第一个参数。3.继续穿西装,运行更多参数。4.返回第一步并再次运行它——直到列表上没有更多的参数