【问题标题】:Selenium_testng_Java_passing data to both @beforetest and @testSelenium_testng_Java_passing 数据到 @beforetest 和 @test
【发布时间】:2016-11-18 02:31:27
【问题描述】:

我的 TestTng 类有 3 个测试(A、B、C),并且这个类扩展了具有 @beforemethod 和 @aftermethod 的基类

现在我想在方法之前将浏览器传递给@,然后将电子邮件传递给方法A

以下是我的示例数据。

电子邮件每次都必须是唯一的。

【问题讨论】:

    标签: java selenium testng-dataprovider


    【解决方案1】:

    其中一种方法是使用@Parameters 注解。

    @BeforeMethod 的代码是-

    @BeforeMethod
    @Parameters("browser")
    public void testMethod1(String browser) {
         //do your task here
    }
    

    方法 A-的代码-

    @Test
    @Parameters("email")
    public void A(String email) {
         //implement your test logic here
    }
    

    Sample TestNG Sample-

    <suite name="Suite1" verbose="1" >
    
    <test name="Test1">
      <parameter name="browser" value="firefox"/> 
      <parameter name="email" value="an-email-id"/> 
      <classes>
        <class name="packagename.ClassName"/>
      </classes>
    </test>
    
    </suite>
    

    【讨论】:

    • thnx @optimist_creeper ,我知道我必须使用 @ Parameter 或 @dataprovider 但是我如何传递它们不同的值以及 @beforemethod 上的每个值我如何在 @test 中传递相应的值方法需要运行 3 次几次 2 次​​span>
    • 你可以使用DataProvider。
    【解决方案2】:

    我找到了解决问题的方法,如果有更有效的方法,请告诉我。我有用户 @ 参数(thanx optimist_creeper),在 testng.xml 中我创建了不同的测试

    <?xml version="1.0" encoding="UTF-8"?>
    
                <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
                <suite name="Suite">
                <test name="Chrome_test">
                <parameter name="Browser" value="chrome"></parameter>
                <parameter name="email" value="a"></parameter>
                <classes>
                    <class name="selenium.mail.gmail.BabyTest">
                        <methods>
                            <include name="A" />
                            <include name="B" />
                            <exclude name="C" />
                        </methods>
            </class>
        </classes>
    </test> <!-- Test -->
    
    <test name="FF_test">
        <parameter name="Browser" value="Firefox"></parameter>
        <parameter name="email" value="b"></parameter>
        <classes>
            <class name="selenium.mail.gmail.BabyTest">
                <methods>
                    <exclude name="C" />
                </methods>
            </class>
        </classes>
    </test>
    
    
    <test name="IE_test">
        <parameter name="Browser" value="IE"></parameter>
        <parameter name="email" value="c"></parameter>
        <classes>
            <class name="selenium.mail.gmail.BabyTest">
                <methods>
                    <include name="A" />
                </methods>
            </class>
        </classes>
    </test>
    

    抱歉,缩进错误,缩进正确的代码没有正确显示。

    【讨论】:

    • 这是关于驱动程序和测试数据管理的。您可以为此使用QAF。您可以在其中使用 driver.name 属性和您可以在数据文件中提供的数据来指定驱动程序。我确信这些数据需要填写表格,您可以使用formDatabean 填充随机数据或来自数据文件。因此,当您有大量测试用例时,您可以正确管理测试数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2019-05-15
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    相关资源
    最近更新 更多