TestNG入门_webDriver+java(二)
来源:互联网 发布:js字符串转换为日期 编辑:程序博客网 时间:2024/06/01 07:49
大纲如下:
TestNG的基本注解
TestNG 按顺序执行测试用例及设置生成报告内容显示的级别
TestNG 异常测试
TestNG 组测试
TestNG 参数化测试
TestNG依赖测试
1、TestNG的基本注解
2、TestNG 按顺序执行测试用例及设置生成报告内容显示的级别
TestNGSimpleTest中的代码如下(只是一部分):
public class TestNGSimpleTest {@Testpublic void A1_ff(){System.out.println("执行1");}@Testpublic void A2_ff(){System.out.println("执行2");}@Testpublic void A3_ff(){System.out.println("执行3");}
在testNG.xml中,可以控制测试用例按照顺序执行,当perserve-order="true"时,可以保证节点下面的方法是按顺序执行的,如下图所示:
<?xml version="1.0" encoding="UTF-8"?><suite name="Suite" parallel="false" > <test verbose="2" preserve-order="true" name="Test" > <classes> <class name="selenium2.TestNGSimpleTest"/> <methods> <include name = "A2_ff"/> <include name = "A1_ff"/> </methods> </classes> </test> <!-- Test --></suite> <!-- Suite -->
注释:
执行testNG.xml后,结果如下:
[TestNG] Running: D:\eclipse_workingspace\git\fifp_ls\selenium2\src\testNG.xml执行2执行1PASSED: A2_ffPASSED: A1_ff=============================================== Test Tests run: 2, Failures: 0, Skips: 0==============================================================================================SuiteTotal tests run: 2, Failures: 0, Skips: 0===============================================[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@1d225a7: 19 ms[TestNG] Time taken by org.testng.reporters.jq.Main@39ab89: 50 ms[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@13c468a: 47 ms[TestNG] Time taken by org.testng.reporters.EmailableReporter2@15253d5: 5 ms[TestNG] Time taken by org.testng.reporters.XMLReporter@dda25b: 10 ms[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 0 ms
3、TestNG 异常测试
testNG跟踪异常处理代码提供了一个选项,可以测试是否需要代码抛出异常或不抛出。@Test注释 expectedExceptions参数一起使用。
4、TestNG 组测试
例如:
@Test(groups ={"systemtest"})
public void A2_ff()
{
System.out.println("执行2");
}
@Test(groups = {"group2"})
public void A3_ff()
{
System.out.println("执行3");
}
配置如下:testNG.xml
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false" >
<test verbose="2" preserve-order="true" name="Test" >
<class name="selenium2.TestNGSimpleTest"/>
<groups>
<run>
<include name = "group2"/>
</run>
</groups>
</test> <!-- Test -->
</suite> <!-- Suite -->
5、TestNG 参数化测试
测试时需要进行参数化,TestNG提供了2种传递参数的方式
第一种:testng.xml方式使代码和测试数据分离,方便扩展和维护
第二种:@DataProvider能够提供比较复杂的参数(data -driven testing),同时方便产生具有一定规律的测试数据集
5.1、通过testng.xml传递参数给测试代码
通过<parameter>标签,在testng.xml中定义参数的值,对于同一参数,可以再不同地方定义不同值。
java代码如下:
public class TestNGSimpleTest {@Test@Parameters("ID")public void A1_ff(int id){System.out.println("学生编号为:"+id);}@Test
tstng.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?><suite name="Suite" parallel="false" > <test verbose="2" preserve-order="true" name="Test" > <parameter name="ID" value="2"/> <parameter name="ID" value="3"/> <classes> <class name="selenium2.TestNGSimpleTest"/> <methods> <include name = "A2_ff"/> <include name = "A1_ff"/> </methods> </classes> </test> </suite> <!-- Suite -->
执行结果如下:
执行2
学生编号为:3
PASSED: A2_ff
PASSED: A1_ff(3)
不过此时有个疑问,从实际来说应该执行3次啊,学生编号为:2的循环丢失了,具体不知道什么原因,网上也没查到为啥没有按顺序进行循环。
5.2、通过DataProvider传递参数
举例:
java代码如下:
public class TestNGSimpleTest {@DataProvider(name="Per")public Object[][] createData(){Object[][] arr={{"001","张三"},{"002","李四"},{"003","王五"}};return(arr);}@Test(dataProvider ="Per")public void A2_ff(String id,String name){System.out.println("学生编号为:"+id);System.out.println("学生姓名为:"+name);}@Test@Parameters("ID")public void A1_ff(int id){System.out.println("学生编号为:"+id);}
testng.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?><suite name="Suite" parallel="false" > <test verbose="2" preserve-order="true" name="Test" > <parameter name="ID" value="2"/> <parameter name="ID" value="3"/> <classes> <class name="selenium2.TestNGSimpleTest"/> <methods> <include name = "A2_ff"/> <include name = "A1_ff"/> </methods> </classes> </test> </suite> <!-- Suite -->
运行结果如下:
学生编号为:001学生姓名为:张三学生编号为:002学生姓名为:李四学生编号为:003学生姓名为:王五学生编号为:3PASSED: A2_ff("001", "张三")PASSED: A2_ff("002", "李四")PASSED: A2_ff("003", "王五")PASSED: A1_ff(3)=============================================== Test Tests run: 4, Failures: 0, Skips: 0===============================================
6、TestNG依赖测试
有时需要按顺序执行用例,一个用例的执行需要前一个用例执行完才可以进行,即用例之间存在依赖关系。
package TankLearn2.Learn;import org.testng.annotations.Test;public class DependsTest { @Test public void setupEnv(){ System.out.println("this is setup Env"); } @Test(dependsOnMethods = {"setupEnv"}) public void testMessage(){ System.out.println("this is test message"); }}
- TestNG入门_webDriver+java(二)
- Selenium2(webdirver)入门之二TestNg安装(Java版)
- selenium+java+testng分层设计(二)
- (JAVA+TESTNG 二)Eclipse+TestNG搭建接口自动化测试框架
- TestNG 安装及使用入门(webDriver+java环境)
- testng+maven+java+idea 接口测试入门二:使用reportng优化报告格式
- testNG入门学习(一)
- TestNG入门
- TestNG 入门
- TestNG 入门
- TestNG 学习总结 - TestNG环境设置(二)
- JAVA入门(二)
- testng+maven+java+idea 接口测试入门一:项目创建
- java入门必读(二)
- java入门学习(二)
- Java初始入门(二)
- Java入门(二)chapter1
- (二)JAVA入门--继承
- ZMO企业自媒体联盟:开启企业自媒体运营官时代
- Hihocoder
- 堆栈的深度理解
- JavaScript 没有函数重载&Arguments对象
- MinGW安装过程
- TestNG入门_webDriver+java(二)
- 如何在默认安装openjdk的Linux系统中安装独立JDK
- Web前端知识点总结(一)
- 在有openJDK的情况下,安装官方JDK,并改为默认
- Android上传文件到Web服务器,PHP接收文件
- 如何在自定义的ViewController加载Storyboard里面的ViewController
- 053第401题
- Nginx源代码分析之upstream(八)
- CLRS 2.2分析算法