如何简化 testng XML 文件中的参数传递?
Posted
技术标签:
【中文标题】如何简化 testng XML 文件中的参数传递?【英文标题】:How do I simplify the passing of parameters in testng XML file? 【发布时间】:2020-05-20 05:43:35 【问题描述】:我有一个 testng XML 文件,它在下面的组中运行 Selenium 测试。我想从 JSON 或其他类型的文件中传递 parameter names 和 values 中设置的所有浏览器信息,因此我不必继续复制和粘贴它们如果我为另一个测试添加配置 - 所以代码更少。使用 testng XML 文件可以做到这一点吗?
感谢您的帮助。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="2" name="test.java" annotations="JDK" parallel="tests">
<test name="Test - Chrome Vienna">
<parameter name="browser" value="chrome"/>
<parameter name="browserVersion" value="78.0"/>
<parameter name="os" value="OS X"/>
<parameter name="osVersion" value="Mojave"/>
<parameter name="resolution" value="1024x768"/>
<groups>
<run>
<include name="vienna" />
</run>
</groups>
<classes>
<class name="com.bookinggo.ticketed.uiendtoend.TicketedSingleJourneyTest"/>
</classes>
</test>
【问题讨论】:
【参考方案1】:您可以使用数据提供程序。在您的测试类中注释测试:
@Test(dataProvider="SearchProvider")
你的数据提供者应该是这样的:
@DataProvider(name="SearchProvider")
public Object[][] getDataFromDataprovider()
return new Object[][]
"browser", "chrome" ,
"browserVersion", "78.0" ,
"os", "OS X"
;
或者,您可以为 dataprovider 创建一个单独的类并使用以下方法读取 json 内容:
@DataProvider
public Object[][] getSearchProvider() throws FileNotFoundException
JsonElement jsonData = new JsonParser().parse(new FileReader("<json path>"));
JsonElement dataSet = jsonData.getAsJsonObject().get("dataSet");
List<TestData> testData = new Gson().fromJson(dataSet, new TypeToken<List<TestData>>()
.getType());
Object[][] returnVal = new Object[testData.size()][1];
int i = 0;
for (Object[] each : returnVal)
each[0] = testData.get(i++);
return returnVal;
【讨论】:
以上是关于如何简化 testng XML 文件中的参数传递?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将 POM 参数/属性传递给 TestNG XML 文件?
testng教程之testng.xml的配置和使用,以及参数传递
Jenkins参数化构建 - Maven Command Line传递TestNG的参数