为了方便测试代码的复用性,常常采用参数化。传递参数给测试代码 有一下两种方法;1、通过配置XML文件实现。2、通过DataProvider 传递参数。

注意:DataProvider 传递参数返回的是一个Object对象或迭代器的对象。

DataProvider

一、通过testng.xml 传递参数给测试代码

 package com.TestNG.web;

 import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import static org.testng.Assert.assertEquals;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class testBaidu {
private WebDriver driver;
private String baseUrl; @BeforeClass
public void setUp() throws Exception {
System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
driver = new ChromeDriver(Options); baseUrl = "https://www.baidu.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} @Test
@Parameters("test1") // 设置测试方法的入参
public void testCase(String test1) throws Exception {
driver.get(baseUrl + "/");
System.out.println("sreach key value:" + test1);
driver.findElement(By.id("kw")).sendKeys(test1);
driver.findElement(By.id("su")).click();
Thread.sleep(2000);
String title = driver.getTitle();
assertEquals(title, test1 + "_百度搜索");
} @AfterClass
public void tearDown() throws Exception {
driver.quit();
}
}

testNG.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none"> <test name="Test">
<parameter name="test1" value="testng" />
<!-- 定义test1 的value 也就是传递给testCase(String test1)方法中的test1-->
<classes>
<class name="com.TestNG.web.testBaidu" />
</classes>
</test>
<!-- 第二次运行 -->
<test name="Test1">
<parameter name="test1" value="selenium" />
<!-- 定义test1 的value 也就是传递给testCase(String test1)方法中的test1-->
<classes>
<class name="com.TestNG.web.testBaidu" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

二、通过DataProvider 传递参数

参数列表为1;

 package com.TestNG.web;

 import static org.testng.Assert.assertEquals;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class TestDataProvider {
private WebDriver driver;
private String baseUrl; @BeforeClass
public void setUp() throws Exception {
System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
driver = new ChromeDriver(Options); baseUrl = "https://www.baidu.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} // 定义对象数组
@DataProvider(name = "user")
public Object[][] Users() {
return new Object[][] { { "第一次搜索" }, { "第二次搜索" }, { "第三次搜索" }, { "第四次搜索" } };
// 往调用该数据的函数中传递对应的值。
}
// 调用user 数组的值 @Test(dataProvider = "user") // 设置测试方法的入参
public void testCase(String test1) throws Exception {
driver.get(baseUrl + "/");
System.out.println("sreach key value:" + test1);
driver.findElement(By.id("kw")).sendKeys(test1);
driver.findElement(By.id("su")).click();
Thread.sleep(2000);
String title = driver.getTitle();
assertEquals(title, test1 + "_百度搜索");
} @AfterClass
public void tearDown() throws Exception {
driver.quit();
}
}

参数列表为2 ;需要传递两个参数。

 import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; public class TestDataProvider1 { // 定义对象数组
@DataProvider(name = "user")
public Object[][] Users() {
return new Object[][] { { "第一次搜索", "第二次搜索" }, { "第三次搜索", "第四次搜索" } };
// 往调用该数据的函数中传递对应的值。
} // 调用user 数组的值
@Test(dataProvider = "user")
public void test1(String name1, String name2) { System.out.println(name1 + " " + name2); } }

参数列表为3 ;需要传递三个参数。

package com.TestNG.web;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; public class TestDataProvider2 {
// 定义对象数组
@DataProvider(name = "pw")
public Object[][] Users() {
return new Object[][] { { "1", "2", "3" }, { "4", "5", "6" } };
// 往调用该数据的函数中传递对应的值。
} // 调用user 数组的值
@Test(dataProvider = "pw")
public void test1(String name1, String name2, String name3) {
System.out.println(name1 + " " + name2 + " " + name3); }
}

  

最新文章

  1. java中实现同步的两种方式:syschronized和lock的区别和联系
  2. img加载在IE11,chrome,FF下的不同
  3. safari渲染Transition动画不流畅问题
  4. JSP 中 forward 和 redirect 的区别_2014.12.31
  5. LeetCode Populating Next Right Pointers in Each Node (技巧)
  6. git 的版本回滚
  7. Android项目---LayoutParams
  8. MacOSX中使用NSWindow创建背景透明的窗体
  9. 浩哥解析MyBatis源码(七)——DataSource数据源模块之托管数据源
  10. nginx响应高并发参数配置
  11. C# TabControl标签的隐藏
  12. 利用css实现hover动态效果
  13. 【转载 Hadoop&amp;Spark 动手实践 2】Hadoop2.7.3 HDFS理论与动手实践
  14. sublime text 3中安装ctags支持函数跳转,安装convertToUtf8支持中文步骤[工具篇]
  15. eclipse中使用svn提交,更新代码。
  16. Spring 学习——Resources接口
  17. 2.3Python基础语法(三)之输入输出
  18. Python 字典(联合内存、联合数组)
  19. Vmware-虚拟机中ubuntu不能联网问题的解决——NAT方式
  20. go练习3 --map的操作

热门文章

  1. UVA.10474 Where is the Marble ( 排序 二分查找 )
  2. HDOJ.2955 Robberies (01背包+概率问题)
  3. jquery Promise和ES6 Promise的区别
  4. mybatis Mapper 中resultType使用方法及返回值为Map的写法
  5. 在eclipse中安装html编辑器插件
  6. Python爬虫学习笔记之微信宫格验证码的识别(存在问题)
  7. 【BZOJ4819】【SDOI2017】新生舞会 [费用流][分数规划]
  8. Achain 钱包部署
  9. [Unity]插件Node Editor介绍 实现类似状态机画布的扩展
  10. cnn 卷积神经网络 人脸识别