测试框架设计学习笔记
<p>group,例如加上tag @Test(groups={“smoke”}),就表示这个test属于smoke group,可以属于多个group,然后相应的在xml文件中,做如下定义,即可使用group,这里可以include也可以exclude。</p><p><suite name="Test - 1"></p><p><test name="My Test modul"></p><p> <groups></p><p> <run></p><p> <include name="smoke" /></p><p> </run></p><p> </groups></p><p> <classes></p><p> <class name="com.main.MainTest01" /></p><p> <class name="com.test.NGTest01" /></p><p> </classes></p><p></test></p><p></suite></p><p></p><p>定义test之间的依赖执行,例如加上tag @Test(dependsOnMethods={“Main03”}),即表示这个test依赖于另一个test Main03,将在其之后执行。</p><p>参数化,例如以下tag的定义,和xml里的定义,这样即可让Main03 test使用xml里定义的变量值。</p><p> // 属于 com.main package里的 MainTest class</p><p> @Parameters({"URL1", "URL2"})</p><p> @Test</p><p> public void Main03(String url1, String url2) {</p><p> System.out.println("main 03");</p><p> System.out.println(url1);</p><p> System.out.println(url2);</p><p> }</p><p>
</p><p><suite name="My Tet Suite"></p><p><parameter name="URL1" value="www.google.com" /></p><p><parameter name="URL2" value="www.facebook.com" /></p><p>
</p><p><test name="My Test modul"></p><p> <packages></p><p> <package name="com.main" /></p><p> </packages></p><p></test></p><p></suite></p><p>@DataProvider特性,具体还是见代码</p><p> @DataProvider</p><p> public String[][] getData() {</p><p> String[][] data = new String;</p><p> data = "1st-username";</p><p> data = "1st-password";</p><p>
</p><p> data = "2nd-username";</p><p> data = "2nd-password";</p><p>
</p><p> return data;</p><p> }</p><p>
</p><p> //这个test会被执行2次,以便使用getData()里提供的,所有的2组测试数据</p><p> @Test(dataProvider="getData")</p><p> public void Main05(String username, String password) {</p><p> System.out.println(username);</p><p> System.out.println(password);</p><p> }</p><p>
</p><p>Listeners特性,有点像JUnit里的TestWatcher,典型用法就是失败后截图,具体见代码..</p><p>package com.main;</p><p>
</p><p>import org.testng.ITestContext;</p><p>import org.testng.ITestListener;</p><p>import org.testng.ITestResult;</p><p>
</p><p>public class Listeners implements ITestListener {</p><p>
</p><p> @Override</p><p> public void onTestStart(ITestResult result) {</p><p> // do something when a test just start</p><p>
</p><p> }</p><p>
</p><p> @Override</p><p> public void onTestSuccess(ITestResult result) {</p><p> // do something when a test success</p><p> }</p><p>
</p><p> @Override</p><p> public void onTestFailure(ITestResult result) {</p><p> // do something when a test fail</p><p> }</p><p>
</p><p> @Override</p><p> public void onTestSkipped(ITestResult result) {</p><p> // do something when a test is skipped</p><p> }</p><p>
</p><p> @Override</p><p> public void onTestFailedButWithinSuccessPercentage(ITestResult result) {</p><p> // TODO Auto-generated method stub</p><p> }</p><p>
</p><p> @Override</p><p> public void onStart(ITestContext context) {</p><p> // TODO Auto-generated method stub</p><p> }</p><p>
</p><p> @Override</p><p> public void onFinish(ITestContext context) {</p><p> // TODO Auto-generated method stub</p><p> }</p><p>}</p><p>
</p><p><?xml version="1.0" encoding="UTF-8"?></p><p><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"></p><p><suite name="My Tet Suite"></p><p><listeners></p><p> <listener class-name="com.main.Listeners" /></p><p></listeners></p><p>
</p><p><parameter name="URL1" value="www.google.com" /></p><p><parameter name="URL2" value="www.facebook.com" /></p><p>
</p><p><test thread-count="5" name="My Test modul"></p><p> <packages></p><p> <package name="com.main"></package></p><p> </packages></p><p></test></p><p></suite></p>
页:
[1]