TestNG参数传递方法
来源:互联网 发布:喷绘用什么软件 编辑:程序博客网 时间:2024/05/22 06:25
一.数据驱动测试时,怎么向测试方法传递参数?
1.利用@DataProvider传递参数,实现方式有用含有多个对象的数组和迭代器两种。
如果DataProvider和Test方法不在同一个类中,记得在Test方法中的dataProviderClass注明dataProvider所在的类。
①含有多个对象的数组 (Object[][])
@Test(dataProvider="data")public void testIsBetween(int n,int low,int high,boolean expected){ System.out.println("Recevied:"+n+" "+low+" "+high+" "+expected); assert.assertEquals(expected,testIsBetween(n,low,high));}@DataProvider(name="data")public Object[][] data(){ int low=5; int high=10; return new Object[][]{ {low-1,low,high,false}, {low+1,low,high,true}, {high-1,low,high,true}, {high+1,low,high,false}, };}
②Iterator对象迭代器,迭代器与对象数组的区别是迭代器允许延迟创建自己的测试数据。
@DataProvider(name="data02") public Iterator<Object[]> getdata2() { Set<Object[]> set = new HashSet<Object[]>(); set.add(new String[]{"!","!_百度搜索"}); set.add(new String[]{"?","?_百度搜索"}); return set.iterator(); } @Test(dataProvider="data02") public void title_test02(String a,String b) throws InterruptedException { driver.findElement(By.cssSelector("#kw")).sendKeys(a); driver.findElement(By.cssSelector("#su")).click(); Thread.sleep(1000); String str = driver.getTitle(); Assert.assertEquals(str, b); }
2.通过testng.xml文件
可以通过定义标签来定义参数值。要注意参数是在还是中定义的问题,和标签定义了suite和test两种测试范围:一个test可以包含一系列的测试方法,一个suite可以包含多个独立的test。
在这两种测试范围定义的参数,满足如下规律:
1)在Suite范围内定义某个参数的值,对所有的Test都有效。
2)在Test范围内定义某个参数的值,只是针对该Test有效。
3)如果同时在Suite和Test中定义某个参数,Test范围的值会屏蔽Suite的值。
举个栗子
testng.xml<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite" verbose="1"> <parameter name="username" value="root" /> <parameter name="password" value="pwd" /> <parameter name="id" value="1234" /> <test name="test1"> <parameter name="username" value="root2" /> <parameter name="password" value="pwd2" /> <classes> <class name="HelloWorld" /> </classes> </test> <test name="test2"> <packages> <package name="com.ibm.testng.test"></package> </packages> </test> <suite>
在suite中都定义了username和password两个参数,同时也在test1中也定义了这两个参数,但是在test2中没有定义。因此,test1中所有测试方法的username和password分别为“root2”和“pwd2”,而test2中所有测试方法的username和password分别为“root”和“pwd
在java代码中,给测试方法传递参数的示例代码如下:
@Parameters({"username"}) @Test(groups = "login") public void inputUsername(String username) { System.out.println("Input Username: " + username); } @Parameters({"password"}) @Test(groups = "login") public void inputPassword(String password) { System.out.println("Input Password: " + password); }
带参的函数要被@Test标记,也要被@Parameters标记,然后要指定Parameters参数的名称,不然会抛出TestNGException.
_____________________我是分割线_____________________________________
二、 自定义注解是怎么实现的?
- TestNG参数传递方法
- TestNG - @Parameters 传递外部参数 对比 @Dataprovider
- TestNG入门笔记[4]: testng.xml 执行case —— 参数的传递
- 方法参数传递(引用传递)
- java方法参数传递
- 参数传递方法
- 方法参数传递
- Matlab参数传递方法
- 方法参数传递方式
- JavaSE0011_方法参数传递
- Java方法参数传递
- c++参数传递方法
- 参数传递的方法
- Java 方法参数传递
- Java方法参数传递
- 方法的参数传递
- 方法参数传递
- Java方法参数传递
- 新装的Ubuntu系统可能要做的事(备忘)
- 当eclipse卡死的时候关闭重启eclipse,运行TOMCAT时,提示8080端口被占用的解决方法
- 2. Add Two Numbers
- 三种方法实现垂直水平居中详解
- Tomcat安装与启动
- TestNG参数传递方法
- 统计学习方法笔记: CART算法
- C 创建链表的四种方式
- Pose Guided Person Image Generation
- POJ 1328
- 一篇文章搞懂DOM
- H
- LeetCode 算法习题 第一周
- js面向对象(一)