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方法前执行!

testng参数化及用例排序的更多相关文章

  1. testng入门教程10 TestNG参数化测试

    在TestNG的另一个有趣的功能是参数测试.在大多数情况下,你会遇到这样一个场景,业务逻辑需要一个巨大的不同数量的测试.参数测试,允许开发人员运行同样的测试,一遍又一遍使用不同的值. TestNG让你 ...

  2. TestNG 参数化应用

    一.第一种参数化方式(testng.xml配置参数) 1.新建ParameterDemo04类 2.拷贝类的路径 3.testng.xml配置类地址及参数 <?xml version=" ...

  3. TestNG参数化测试Spring应用Dubbo接口

    一.配置dubbo的Bean文件: 配置spring-dubbo.xml文件: <dubbo:reference interface="com.datatrees.basisdata. ...

  4. testng参数化(提供测试数据)【转】

    testng提供测试数据的两个注释:@DataProvide和@Parameter   一.通过testng.xml中设置参数 (实际上testng.xml只是一个名字,可以起任何一个名字,只要是.x ...

  5. testng跑失败用例重试

    testng 提高用例通过率,失败用例要重新运行一次 步骤: 1.新建一个Retry 类,implements IRetryAnalyzer接口,这个类里面确定重跑次数,以及分析每次失败是否需要重新运 ...

  6. TestNG监听器实现用例运行失败自动截图、重运行功能

    注: 以下内容引自 http://blog.csdn.net/sunnyyou2011/article/details/45894089 (此非原出处,亦为转载,但博主未注明原出处) 使用Testng ...

  7. testNG参数化

    听说testNG比junit更好用,记录下 环境:springboot2.0+testNG6.8+maven+myeclipse 一 安装 (1)m'yeclipse安装testNg包,下载testN ...

  8. testng参数化(提供测试数据)

    testng提供测试数据的两个注释:@DataProvide和@Parameter   一.通过testng.xml中设置参数 (实际上testng.xml只是一个名字,可以起任何一个名字,只要是.x ...

  9. selenium2 TestNG参数化

    想要参数化,首先要加入@Parameters({"参数1","参数2"}) package com.demo.test; import java.util.co ...

随机推荐

  1. python——面向对象篇之异常和反射

    内置函数isinstance和issubclass 1.1 isinstance用法: isinstance(string,str) 判断第一个参数是否是第二个参数的子集,例如: print isin ...

  2. 关于AJAX

    Ajax(异步JavaScript和XML) ajax主要用于异步加载页面,可以使用户在不刷新页面的情况下进行更新. ajax的主要优势是对页面的请求以异步的方式发送到服务器.而服务器不会再用整个页面 ...

  3. 第十周PSP

    第十周PSP   工作周期:11.17-11.24  本周PSP: C类型 C内容 S开始时间 ST结束时间 I中断时间 T净时间(分) 文档 写随笔(PSP) 16:20min 16:50min 0 ...

  4. python 自动发邮件 Errno61 Connection refused

    此问题是在mac机器上遇到 之前在windows平台运行ok的脚本在mac上报错 后来查了半天 发现是网络接入不对 切换下网络后问题就解决了

  5. C#实现简单的委托异步调用

    delegate void textAsy(); static void Main(string[] args) { textAsy t = texts; AsyncCallback callBack ...

  6. (转)SQL Server 性能调优(cpu)

    摘自:http://www.cnblogs.com/Amaranthus/archive/2012/03/07/2383551.html 研究cpu压力工具 perfom SQL跟踪 性能视图 cpu ...

  7. OPENQUERY 无行返回 无数据返回 数据缺失

    用SQL Server 2008 R2 的 Oracle Provider for OLE DB 链接Oracle . 在SQL Server中使用下面查询语句,没有数据返回 但是再PL/SQL中查找 ...

  8. Nginx配置proxy_pass

    nginx配置proxy_pass,需要注意转发的路径配置 1.location /test/ { proxy_pass http://t6:8300; } 2.location /test/ { p ...

  9. discuz二次开发,分析和实现 之 向dz数据库插入自己的帖子吧

    发个博客太麻烦了,难怪写博客的越来越少,吐一下,cnblogs的编辑器模板太丑! 最近开发社区 需要采集一些数据,使得模板输出有图文效果.就写了个简单的采集脚本,爬取目标站的内容,(用php 下载图片 ...

  10. flask-admin章节二:wtforms的使用以及在数据库场景中使用QuerySelectField代替SelectField

    概述 flask admin可以支持自定义视图,对于涉及到比较复杂的视图可以选择继承flask_admin.BaseView来定义自己期待的结构. 自定义的视图的每个函数可以使用flask_admin ...