testng参数化学习

有两种方式:

1.使用testng.xml----@parameter ,适合参数化简单的测试数据

2.数据提供者 ------@dataProvider,适合复杂的测试数据,如对象、从数据库和文件中读取的数据等。

 

一.使用@parameter参数化登录脚本

脚本代码:

@Test

  @Parameters({"username","pwd","expect"})

  public void testLogin(String username,String pwd,String expected) {

  WebElement name = driver.findElement(By.id("login_name"));

  name.sendKeys(username);

  WebElement passwd = driver.findElement(By.id("user_pass"));

  passwd.sendKeys(pwd); 

  WebElement clk = driver.findElement(By.className("btn_01"));

  clk.click();

  WebElement message = driver.findElement(By.className("error2"));

  System.out.print(message.getText());

  assertEquals(expected,message.getText());

  }

Testng.xml配置参数:

xml version="1.0" encoding="UTF-8"?>

<suite name="Suite" parallel="false">

  <test name="Test">

      <parameter name="username" value="ranling"/>

      <parameter name="pwd" value=""/>

      <parameter name="expect" value="用户名或密码不能为空"/>

    <classes>

      <class name="com.sample.sampleTest"/>

    classes>

  test> 

suite> 

.testng.xml文件中通过设置参数、参数值,但要注意范围,标签定义了suitetest两种测试范围。满足规律如下:

1.在suit范围内定义某个参数对所有的test都有效

2.在test范围内定义某个参数只针对当前test有效

3.在suittest中有某个相同的参数,test范围内的参数会自动屏蔽suit中的参数

 

二.使用@dataProvider参数化登录脚本

 

//1.声明数据提供者,并命名

      @DataProvider(name="keyword")

  public Object[][] keywordProiverd(){

  return new Object[][]{{"hi"},{"nihao"}};

  }

//2.为测试方法提供测试数据

  @Test(dataProvider="keyword")

  public void testProvider(String key){

  System.out.println(key);

  }

你可能感兴趣的:(Selenium自动化测试)