有没有办法在TestNG中设置全局参数?

时间:2018-09-10 07:10:49

标签: java selenium-webdriver automated-tests testng ui-automation

我目前正在使用Selenium WebDriver框架和TestNG来自动化Web应用程序。我想为testing.xml文件中的每个测试类提供参数,但是在Web资源上,我只看到了为某些类预定义了某些参数的方法,例如:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parameterization Test Suite">
<test name="Testing Parameterization">
<parameter name="browser" value="Firefox"/>
<parameter name="username" value="testuser"/>
<parameter name="password" value="testpassword"/>
    <classes>
        <class name="com.parameterization.TestParameters" />
    </classes>
</test>
</suite>

在类名中,只明确指出一个TestParameters类。

有什么办法可以将某些参数设置为全局参数?那么我们可以在项目中的任何测试类中使用它们吗?

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解您的问题,但是您可以在套件级别(对于每个测试,在示例suite-param中)或测试级别定义参数:

取自asyncio.run

<suite name="Parameter test Suite" verbose="1">
    <!-- This parameter will be passed to every test in this suite -->
    <parameter name="suite-param" value="suite level parameter" />
    <test name="Parameter Test one">
        <classes>
            <class name="com.howtodoinjava.test.ParameterTest">
                <methods>
                    <include name="prameterTestOne" />
                </methods>
            </class>
        </classes>
    </test>
    <test name="Parameter Test two">
        <!-- This parameter will be passed this test only -->
        <parameter name="test-two-param" value="Test two parameter" />
        <classes>
            <class name="com.howtodoinjava.test.ParameterTest">
                <methods>
                    <include name="prameterTestTwo" />
                </methods>
            </class>
        </classes>
    </test>
    <test name="Parameter Test three">
        <!-- Overriding suite level parameter -->
        <parameter name="suite-param" value="overiding suite parameter" />
        <!-- Test specific parameter -->
        <parameter name="test-three-param" value="test three parameter" />
        <classes>
            <class name="com.howtodoinjava.test.ParameterTest">
                <methods>
                    <include name="prameterTestThree" />
                </methods>
            </class>
        </classes>
    </test>
</suite>