【发布时间】:2016-11-18 02:31:27
【问题描述】:
我的 TestTng 类有 3 个测试(A、B、C),并且这个类扩展了具有 @beforemethod 和 @aftermethod 的基类
现在我想在方法之前将浏览器传递给@,然后将电子邮件传递给方法A
电子邮件每次都必须是唯一的。
【问题讨论】:
标签: java selenium testng-dataprovider
我的 TestTng 类有 3 个测试(A、B、C),并且这个类扩展了具有 @beforemethod 和 @aftermethod 的基类
现在我想在方法之前将浏览器传递给@,然后将电子邮件传递给方法A
电子邮件每次都必须是唯一的。
【问题讨论】:
标签: java selenium testng-dataprovider
其中一种方法是使用@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>
【讨论】:
我找到了解决问题的方法,如果有更有效的方法,请告诉我。我有用户 @ 参数(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>
抱歉,缩进错误,缩进正确的代码没有正确显示。
【讨论】:
driver.name 属性和您可以在数据文件中提供的数据来指定驱动程序。我确信这些数据需要填写表格,您可以使用formDatabean 填充随机数据或来自数据文件。因此,当您有大量测试用例时,您可以正确管理测试数据。