(并行)在TestNG中与TextNG.XML套件进行交叉浏览



要通过TestNG@Parameter、进行交叉浏览

我们必须通过@Parameter注释并在标签、中定义变量值

案例:当我们有多个.XML套件时,每个.XML套件都包含5个或7个以上的测试脚本。

在这种情况下,我们必须为每个具有类重复的浏览器定义参数值。如果有50个测试类,那么如果总共定义150次,这根本没有意义。

<suite name="Suite">
<test name="ChromeTest">
<parameter name="browser" value="chrome" />
<classes>
<class name="Demos.Demo01" />
<class name="Demos.Demo02" />
<class name="Demos.Demo03" />
<class name="Demos.Demo04" />
</classes>
</test>
<!-- Test -->
<test name="FirefoxTest">
<parameter name="browser" value="Firefox" />
<classes>
<class name="Demos.Demo01" />
<class name="Demos.Demo02" />
<class name="Demos.Demo03" />
<class name="Demos.Demo04" />
</classes>
</test>
<test name="EdgeTest">
<parameter name="browser" value="edge" />
<classes>
<class name="Demos.Demo01" />
<class name="Demos.Demo02" />
<class name="Demos.Demo03" />
<class name="Demos.Demo04" />
</classes>
</test>
<!-- Test -->
</suite>
<!-- Suite -->

请分享有效的管理方法,

在TestNG或Selenium中,是否有其他方法可以定义并行浏览范围,以便在本地系统上进行交叉浏览?除了(硒网格(

您可以使用包而不是类来执行所有测试,而不必提及每个类:

<test name="ChromeTest" parallel="none" preserve-order="true">
<parameter name="browser" value="chrome" />
<packages>
<package name="Demos"  />
</packages>
</test>
<test name="EdgeTest" parallel="none" preserve-order="true">
<parameter name="browser" value="edge" />
<packages>
<package name="Demos"  />
</packages>
</test>

或者只使用定义了多个参数的当前方法(您也需要使用DataProvider来解析String数组(:

<suite name="Suite" verbose="3">
<test name="SeleniumTest verbose="3"">
<parameter name="browser" value="chrome, edge, firefox" />
<classes>
<class name="Demos.Demo01" />
<class name="Demos.Demo02" />
<class name="Demos.Demo03" />
<class name="Demos.Demo04" />
</classes>
</test>
<!-- Test -->
</suite>
<!-- Suite -->

并添加DataProvider来解析每个浏览器值:

@DataProvider
public Object[][] getData(ITestContext context) {
String parameter = context.getCurrentXmlTest().getLocalParameters().get("browser");
String[] browsers = parameter.split(",");
Object[][] returnValues = new Object[names.length][1];
int index = 0;
for (Object[] each : returnValues) {
each[0] = browsers[index++].trim();
}
return returnValues;
}

最新更新