选择Testng的理由:

1.可指定执行顺序, dependsOnMethods 属性来应对测试的依赖性问题。

2.·参数化1:轻轻松松从XML中得到参数

   @BeforeClass
public void startTest(ITestContext context) {
this.testContext = context;
String browserName = context.getCurrentXmlTest().getParameter("browserName");
driver = new SeleniumUtils();
timeOut = Integer.parseInt(context.getCurrentXmlTest().getParameter("timeOut"));
sleepTime = Integer.valueOf(context.getCurrentXmlTest().getParameter("sleepTime"));
waitMillisecondsForAlert = Integer
.valueOf(context.getCurrentXmlTest().getParameter("waitMillisecondsForAlert"));
webUrl = context.getCurrentXmlTest().getParameter("testurl");
driver.openBrowser(browserName, webUrl, timeOut); }
<suite name="Suite" parallel="none">
<parameter name="browserName" value="chrome" />
<parameter name="testurl" value="http://*********8080/****" />
<parameter name="sleepTime" value="800" />
<!-- 页面元素10秒不出现超时时间 -->
<parameter name="timeOut" value="20" />
<!-- 这个是等待alert弹出的时间 单位毫秒 -->
<parameter name="waitMillisecondsForAlert" value="40000" />

3.参数化二:@DataProvider,封装Excel、xml、JSON

封装数据:

/**
* 测试数据提供者 - 方法
*/
@DataProvider(name = "testData")
public Iterator<Object[]> dataFortestMethod() throws IOException {
String moduleName = null; // 模块的名字
String caseNum = null; // 用例编号
String className = this.getClass().getName();
int dotIndexNum = className.indexOf("."); // 取得第一个.的index
int underlineIndexNum = className.indexOf("_"); // 取得第一个_的index if (dotIndexNum > 0) {
String packagename = className.substring(0, className.lastIndexOf("."));// 得到整个包名
moduleName = packagename.substring(packagename.lastIndexOf(".") + 1);
; // 取到模块的名称
} if (underlineIndexNum > 0) {
String caseName = className.substring(className.lastIndexOf(".") + 1);// 得到类名
caseNum = caseName.substring(caseName.indexOf("_") + 1, caseName.indexOf("_") + 4); // 取到用例编号
}
// 将模块名称和用例的编号传给 ExcelDataProvider ,然后进行读取excel数据
return new ExcelDataProvider(moduleName, caseNum);
}

引用:

    @Test(dataProvider = "testData")
public void login(Map<String, String> data) {
LoginPage.login(data.get("USERNAME"), data.get("PASSWORD"),
data.get("CODE"));
LoginPage.checkUserName(data.get("EXP_RESULT"));
}

4.测试报告(虽然自带的报告很丑,但可以经过二次开发,还是挺漂亮的,哈哈)

Testng优势的更多相关文章

  1. testNg vs junit 4.X @Test

    http://www.ibm.com/developerworks/cn/java/j-cq08296/ 一个简单的测试用例 初看起来,JUnit 4 和 TestNG 中实现的测试非常相似.为了更好 ...

  2. 持续集成:TestNG组织如何测试用例

    持续集成:TestNG组织如何测试用例   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:90 ...

  3. RoportNG报表显示中文乱码和TestNG显示中文乱码实力解决办法

    最近在进军测试自动化框架学习阶段,但无意间总是会伴随小问题的困扰,比如中文乱码,而导致显示总是不舒服,个人觉得,就一定要解决,似乎有点点强迫症.所以遇到RoportNG报表显示中文乱码和TestNG显 ...

  4. TestNG并行测试

    并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力.TestNG允许我们以并行(多线程)的方式来执行测试.这就意味着基于TestNG测试组 ...

  5. TestNG的简单使用

    TestNG的简单使用 TestNG(Test Next Generation)是一个测试框架,其灵感来自JUnit和NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便. TestNG是 ...

  6. ReportNG报表显示中文乱码和TestNG显示中文乱码实力解决办法

    最近在进军测试自动化框架学习阶段,但无意间总是会伴随小问题的困扰,比如中文乱码,而导致显示总是不舒服,个人觉得,就一定要解决,似乎有点点强迫症.所以遇到ReportNG报表显示中文乱码和TestNG显 ...

  7. TestNG简单介绍以及安装—学习笔记1

    TestNG是什么 到这里,大家肯定已经运行了一些关于Selenium的测试用例了(这里主要是站着一个自动化测试工程师的角度来看待TestNG的,所以这里所说的也都是基于Web测试的验证点来说的,而不 ...

  8. testng入门教程12 TestNG执行多线程测试

    testng入门教程 TestNG执行多线程测试 testng入门教程 TestNG执行多线程测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者 ...

  9. TestNG入门到...

    目录 一.概述 二.@Test注解常用参数 三.测试中常用的断言(assert) 四.TestNG常用注解及使用 五.配置文件xml常用标签 六.参数传递 七.测试报告 一.概述 1.TestNG是一 ...

随机推荐

  1. ruby on rails validates

    validates :conclusion, :presence => true, :inclusion => { :in => [0,1] } validates :email, ...

  2. LCS 最长公共子子串

    与 最长公共子序列类似 只是最长公共子串必须连续 所以只能走斜线!!!! ''' LCS 最长公共子序列 ''' def LCS_len(x, y): m = len(x) n = len(y) dp ...

  3. python一段代码 感受一下

    class T():    def aa(self):        write = 1        print '123' class B():            def hehe(self) ...

  4. BCG控件初步领略

    BCGPVisualStudioGUIDemo 这个界面很不错呀,如果能够实现这种效果,能够解决系列问题 画图程序,这种界面非常先进.用于石材大板等非常优秀. email的效果 这种东西如果效果不错, ...

  5. 20145315 《Java程序设计》第十周学习总结

    20145315 <Java程序设计>第十周学习总结 教材学习内容总结 网络概述 为了能够方便的识别网络上的每个设备,网络中的每个设备都会有一个唯一的数字标识,这个就是IP地址.IP地址实 ...

  6. LM358电流检测电路

    ----------------------------------------------------------------------------------------- ---------- ...

  7. 扩容swap交换分区空间

    安装linux系统时会指定Swap分区大小,一般是内存的两倍,但在有些场景下可能预先设置的Swap分区空间不足,这个时候需要增加其大小 官方建议在RAM是2到4.5G时,swap是RAM的2倍:如果R ...

  8. Cannot perform runtime binding on a null reference

    一个方法的参数是dynamic  obj 方法内调用了obj.Header 但是外部传递进来的obj是null,然后就会报这个错.

  9. Android -- 在一个Activity开启另一个Activity 并 获取他的返回值。

    1. 视图示例, 按选择弹出 2界面, 选择选项  回显到1    2. 示例代码 MainActivity.java, 第一个activity public class MainActivity e ...

  10. [osg][osgearth]osg的分页加载,代码和结构图

    DatabasePager加载数据的过程: 多线程 使用DatabasePager加载数据的流程: 左侧的图框表示数据的检索和输入, 中间的白色框表示用于数据存储的内存空间,而右边的图框表示存储数据的 ...