代码之家  ›  专栏  ›  技术社区  ›  Ishita Shah Y_Sh

(并行)使用textng.xml套件在testng中进行交叉浏览

  •  0
  • Ishita Shah Y_Sh  · 技术社区  · 6 年前

    要通过testng@参数执行交叉浏览,

    我们必须通过@parameter注释并在标记中定义变量值,

    案例:当我们有多个.xml套件,并且每个.xml套件包含超过5个或7个或10个以上的测试脚本时。

    在这种情况下,我们必须通过重复的类为每个浏览器定义参数值。如果有50个测试类,那么向前一步,那么if将定义总共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中,是否有其他方法定义并行浏览范围以在本地系统上进行交叉浏览?除(硒网格)

    1 回复  |  直到 6 年前
        1
  •  3
  •   AutomatedOwl    6 年前

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

    <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):

    <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
    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;
    }