【问题标题】:Is there a way to set global parameters in TestNG?有没有办法在 TestNG 中设置全局参数?
【发布时间】:2018-09-10 07:10:49
【问题描述】:

我目前正在使用 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类。

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

【问题讨论】:

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


    【解决方案1】:

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

    取自https://howtodoinjava.com/testng/testng-test-parameters-through-testng-xml-and-parameters-annotation/

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

    【讨论】:

    • 你说得对,它看起来像一个解决方案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-01-04
    • 2021-08-20
    • 2014-07-04
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    相关资源
    最近更新 更多