一、TestNg的数据驱动

1. 数据驱动

1)什么是数据驱动?

·数据驱动是指在一个脚本固定的情况下,用数据来控制该脚本是否运行,以及运行的次数,还有每次运行时对应的参数

2)数据驱动的应用场景:

·比如我们在测试登录时,要测试用不同的账户登录,难道我们需要针对每一个账户去写一个脚本吗?这样显然是不明智的,于是,testng为我们提供了这个注脚,让我们只需要提供出数据,就可以控制脚本运行次数及相应的参数。

2. TestNg数据驱动(数据源)

1)实现方式:

·用注脚: @DataProvider

2)示例:

第一种实现方式:不指定name

运行结果:

第二种方式:指定name

运行结果:

二、TestNg用XML运行

TestNg的几种运行方式:

1. 以method为基点

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1" parallel="false" thread-count="1">
<test name="test1">
<classes>
<class name="com.test.ng1.test1">
<methods>
<include name="test2"/>
<include name="test1"/>
</methods>
</class>
</classes>
</test>
</suite>

运行结果:

2. 以class为基点

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1" parallel="false" thread-count="1">
<test name="test1">
<classes>
<class name="com.test.ng1.test1">
</class>
</classes>
</test>
</suite>

运行结果:

3. 以package为基点

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1" parallel="false" thread-count="1">
<test name="test1">
<packages>
<package name="com.test.ng1"/>
</packages>
</test>
</suite>

三、TestNg用例管理

1. 用例管理原则——用例独立少依赖

package com.test.ng1;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
public class test1 {
//无名的数据驱动,调用可以使用方法名
@DataProvider
public Object[][] logindata(){
return new Object[][]{{"a"},{"b"}};
}
//因为数据驱动没有名字,搜易可以写方法名
@Test(dataProvider="logindata")
public void test1(String info){
System.out.println(info);
}
//为数据驱动定义名字
@DataProvider(name="longoutdata")
public Object[][] logoutDataInfo(){
return new Object[][]{{"1"},{"2"}};
}
//指定数据驱动的名字,而非方法名
@Test(dataProvider="longoutdata")
public void test2(String info){
System.out.println(info);
}
@BeforeClass
public void bClass(){
System.out.println("BeforeClass");
}
@AfterClass
public void aClass(){
System.out.println("AfterClass");
}
@BeforeMethod
public void setUp(){
System.out.println("beforemethod,setUp");
}
@AfterMethod
public void tearDown(){
System.out.println("aftermethod,tearDown");
}
}

————————————————
版权声明:本文为CSDN博主「jffhy2017」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jffhy2017/article/details/60972253

最新文章

  1. EF框架的三种工作方式
  2. EXCEL 图表 只在拐点的时候显示数字
  3. asp.net面试题汇总
  4. ubuntu 14.04 难用的vi
  5. WPF拖到、移动控件
  6. 【Unity3D实战】摇摆直升机开发实战(一)
  7. error at ::0 can&#39;t find referenced pointcut performance
  8. 基于visual Studio2013解决C语言竞赛题之0708字符串查找
  9. 实时控制软件第一周 汽车ABS系统软件分析
  10. 性能调优案例分享:jvm crash的原因 1
  11. 简谈java 中的 继承和多态
  12. expdp导出文件,ORA-01555: 快照过旧: 回退段号 716
  13. Markdown学习示例
  14. Elasticsearch(单节点)
  15. leetcode141
  16. js-ES6学习笔记-const命令
  17. C程序设计教学小结(选择结构)
  18. telnet的装配及xinetd的讨论
  19. UiAutomator 代码记录 : 遍历桌面
  20. manager

热门文章

  1. linux部署go
  2. Linux内核文档翻译——kobject.txt
  3. SQL join 三种扩展用法
  4. [转帖]How long does it take to make a context switch?
  5. vue nexttick的理解和使用场景
  6. linux启动tomcat很久或者很慢Tomcat启动时卡在“INFO: Deploying web application directory ......”的解决方法
  7. 用lambda表达式写左联查询的示例
  8. 冒泡排序法vs快速排序法
  9. gitblit服务器:用户、团队、权限管理
  10. Apache配置WebSocket代理