以编程方式在 TestNG xml 套件中设置测试参数以进行并行执行
Programmatically set test parameters in TestNG xml suite for parallel execution
我正在尝试 运行 并行模式下的 TestNG 套件,但想要动态更改 threadCount 取决于外部参数。
If tests number = threadCount (params Number) - 我可以通过使用 TestNG API 以这种方式完成:
List<String> params = Arrays.asList("1", "2");
suite.setThreadCount(params.size());
suite.setParallel(XmlSuite.ParallelMode.TESTS);
List<XmlTest> xmlTests = suite.getTests();
for (int i = 0; i < xmlTests.size(); i++) {
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("param", params.get(i));
xmlTests.get(i).setParameters(paramsMap);
}
但是如果测试数 > threadCount (params Number) 我想设置相应的参数到 threadCount:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestNG suite" parallel="tests" thread-count="2">
<test name="Test 1">
<parameter name="param" value="1"/>
<classes>
<class name="tests.Tests_1">
</class>
</classes>
</test>
<test name="Test 2">
<parameter name="param" value="2"/>
<classes>
<class name="tests.Tests_2">
</class>
</classes>
</test>
<test name="Test 3">
<parameter name="param" value="1"/>
<classes>
<class name="tests.Tests_3">
</class>
</classes>
</test>
</suite>
例如对于 2 个 threadCount 和 6 个测试设置参数:1, 2, 1, 2, 1, 2;
对于 3 个线程数和 5 个测试集:1、2、3、1、2
如何迭代测试并设置适当的参数?
您需要计算 threadCount 的索引:
int j = 0;
for (int i = 0; i < xmlTests.size(); i++) {
if (j>= params.size()) {
j = 0;
}
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("param", params.get(j));
xmlTests.get(i).setParameters(paramsMap);
j++;
}
我正在尝试 运行 并行模式下的 TestNG 套件,但想要动态更改 threadCount 取决于外部参数。
If tests number = threadCount (params Number) - 我可以通过使用 TestNG API 以这种方式完成:
List<String> params = Arrays.asList("1", "2");
suite.setThreadCount(params.size());
suite.setParallel(XmlSuite.ParallelMode.TESTS);
List<XmlTest> xmlTests = suite.getTests();
for (int i = 0; i < xmlTests.size(); i++) {
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("param", params.get(i));
xmlTests.get(i).setParameters(paramsMap);
}
但是如果测试数 > threadCount (params Number) 我想设置相应的参数到 threadCount:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestNG suite" parallel="tests" thread-count="2">
<test name="Test 1">
<parameter name="param" value="1"/>
<classes>
<class name="tests.Tests_1">
</class>
</classes>
</test>
<test name="Test 2">
<parameter name="param" value="2"/>
<classes>
<class name="tests.Tests_2">
</class>
</classes>
</test>
<test name="Test 3">
<parameter name="param" value="1"/>
<classes>
<class name="tests.Tests_3">
</class>
</classes>
</test>
</suite>
例如对于 2 个 threadCount 和 6 个测试设置参数:1, 2, 1, 2, 1, 2;
对于 3 个线程数和 5 个测试集:1、2、3、1、2
如何迭代测试并设置适当的参数?
您需要计算 threadCount 的索引:
int j = 0;
for (int i = 0; i < xmlTests.size(); i++) {
if (j>= params.size()) {
j = 0;
}
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("param", params.get(j));
xmlTests.get(i).setParameters(paramsMap);
j++;
}