http://blog.sina.com.cn/s/blog_6966650401012ra0.html
一、一个简单的测试谷歌搜索
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Parameter;
public class GoogleTest
{
@Test
public void search(ITestContext context) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("乙烯");
element.submit();
Assert.assertTrue(driver.getTitle().contains("乙烯"), "Title is wrong!");
}
}
-------------------------------------------------------------------
<suite name="google demo" verbose="2">
<test name="Search function">
<classes>
<class name="test.GoogleTest">
<methods>
<include name="search" />
</methods>
</class>
</classes>
</test>
</suite>
注:
1.verbose:执行的输出详细程度。因为testng会输出html格式的测试报告。因此该属性决定报告详细程度。程度值由0-10.0是没有,10是最详细。不是必需有的。
二、使测试更加灵活:
1. 可以配置使用任意支持的浏览器进行测试;
2. 配置所有Google的URL;
3. 配置搜索的关键字。
修改后的代码如下:
public class GoogleTest {
WebDriver driver;
@Parameters({"browser"})
@BeforeTest
public void setupBrowser(String browser){
if (browser.equals("firefox")){
driver = new FirefoxDriver();
} else {
driver = new ChromeDriver();
}
}
@Parameters({ "url", "keyword" })
@Test
public void search(String url, String keyword) {
driver.get(url);
WebElement element = driver.findElement(By.name("q"));
element.sendKeys(keyword);
element.submit();
Assert.assertTrue(driver.getTitle().contains(keyword), "Title is wrong!");
}
}
---------------------------------------------------------------
<suite name="google demo" verbose="2">
<parameter name="browser" value="firefox" />
<parameter name="url" value="http://www.google.com" />
<parameter name="keyword" value="乙烯" />
<test name="Search function" preserve-order="true">
<classes>
<class name="test.GoogleTest">
<methods>
<include name="setupBrowser" />
<include name="search" />
</methods>
</class>
</classes>
</test>
</suite>
注:
1.利用TestNG的@Parameters标签,让测试方法从testng.xml里面读取参数,实现参数化。
参数化详解见:http://blog.sina.com.cn/s/blog_6966650401012lyn.html
2.在testng.xml的配置中,test节点需要增加一个属性的配置: preserve-order=”true”。这个preserve-order默认是false,在节点下面的所有方法的执行顺序是无序的。把它设为true以后就能保证在节点下的方法是按照顺序执行的。在上面代码中setupBrowser方法必须在search方法前执行!
@Test
public void search(ITestContext context) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("乙烯");
element.submit();
Assert.assertTrue(driver.getTitle().contains("乙烯"), "Title is wrong!");
}
}
-------------------------------------------------------------------
<suite name="google demo" verbose="2">
<test name="Search function">
<classes>
<class name="test.GoogleTest">
<methods>
<include name="search" />
</methods>
</class>
</classes>
</test>
</suite>
注:
1.verbose:执行的输出详细程度。因为testng会输出html格式的测试报告。因此该属性决定报告详细程度。程度值由0-10.0是没有,10是最详细。不是必需有的。
二、使测试更加灵活:
1. 可以配置使用任意支持的浏览器进行测试;
2. 配置所有Google的URL;
3. 配置搜索的关键字。
修改后的代码如下:
public class GoogleTest {
WebDriver driver;
@Parameters({"browser"})
@BeforeTest
public void setupBrowser(String browser){
if (browser.equals("firefox")){
driver = new FirefoxDriver();
} else {
driver = new ChromeDriver();
}
}
@Parameters({ "url", "keyword" })
@Test
public void search(String url, String keyword) {
driver.get(url);
WebElement element = driver.findElement(By.name("q"));
element.sendKeys(keyword);
element.submit();
Assert.assertTrue(driver.getTitle().contains(keyword), "Title is wrong!");
}
}
---------------------------------------------------------------
<suite name="google demo" verbose="2">
<parameter name="browser" value="firefox" />
<parameter name="url" value="http://www.google.com" />
<parameter name="keyword" value="乙烯" />
<test name="Search function" preserve-order="true">
<classes>
<class name="test.GoogleTest">
<methods>
<include name="setupBrowser" />
<include name="search" />
</methods>
</class>
</classes>
</test>
</suite>
注:
1.利用TestNG的@Parameters标签,让测试方法从testng.xml里面读取参数,实现参数化。
参数化详解见:http://blog.sina.com.cn/s/blog_6966650401012lyn.html
2.在testng.xml的配置中,test节点需要增加一个属性的配置: preserve-order=”true”。这个preserve-order默认是false,在节点下面的所有方法的执行顺序是无序的。把它设为true以后就能保证在节点下的方法是按照顺序执行的。在上面代码中setupBrowser方法必须在search方法前执行!