利用Testng做参数化

简述下testng做参数化的几种方式:

在连平等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、网站设计 网站设计制作按需设计,公司网站建设,企业网站建设,高端网站设计,全网营销推广,成都外贸网站建设,连平网站建设费用合理。

@Parameters

dataProvider

如果使用的参数相对简单可以使用@Parameters,把参数定义在.xml文件中即可,如新建一个testng.xml
考虑如下测试场景,我想打开51cto的官网,然后退出

我就可以把url定义在testng.xml中

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

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<!--  thread-count="4" 为同时执行的线程数   parallel="tests" 为同时执行的测试级别  -->

<suite name="ppTest" thread-count="4" parallel="tests">

<parameter name="url" value="http://www.zhengmoney.com" />

<test name="ppTest" preserve-order="true">

<classes>

<class name="pp.PPTest" />

</classes>

</test>

</suite>

然后在pp包下面新建PPTest类:

package pp;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.Optional;

import org.testng.annotations.Parameters;

import org.testng.annotations.Test;

/**

 * @author Anthony

 *

 */

public class PPTest {

  public WebDriver driver;

  /**

   * @param domainURL @Optional是如果在xml中没读到url就用Optional里面的值

   */

  @Parameters({"url"})

  @Test

  public void ppTest(@Optional("http://www.baidu.com/") String domainURL) {

    driver = new FirefoxDriver();

    driver.get(domainURL);

    driver.quit();

  }

}

@Parameters 可以被放置到如下位置:

(1)在任何已经被 @Test, @Before/After 或 @Factory 注解过的地方。

(2)在测试类中至多被放到一个构造函数签。这样,TestNG才能在需要的时候使用 testng.xml 中特定的参数来实例化这个类。这个特性可以被用作初始化某些类中的值,以便稍后会被类中其他的方法所使用。

注意:

XML中的参数会按照Java参数在注解中出现的顺序被映射过去,并且如果数量不匹配,TestNG会报错。

参数是有作用范围的。在testng.xml 中,你即可以在<suite> 标签下声明,也可以在 <test>下声明。如果两个参数都有相同的名字,那么,定义在<test> 中的有优先权。这在你需要覆盖某些测试中特定参数的值时,会非常方便。

DataProvider返回的是一个Object的二维数组,二维数组中的每个一维数组都会传递给调用函数,作为参数使用。运行的时候,会发现, @Test标识的test method被执行的次数和object[][]包含的一维数组的个数是一致的,而@Test标识的函数的参数个数,也和object内一维数组内的元素数是一致的。

申明数据源可以像这样:

package com.example.testdata;

import org.testng.annotations.DataProvider;

/**

 * @author Anthony

 *

 */

public class TestProvider {

@DataProvider(name = "account")

public static Object[][] accountInfo() {

return new Object[][] { new Object[] { "古雷马", "1234qwer" },

new Object[] { "古雷星", "1234qwer" } };

}

}

调用时则可以这样:

import org.testng.Assert;

import org.testng.annotations.Test;

import com.example.testdata.TestProvider;

/**

 * @author Anthony

 *

 */

public class TestPractice {

 @Test(dataProvider = "account", dataProviderClass = TestProvider.class)

  public void testAgain(String userName, String password) {

    System.out.println("I'm test again");

    Assert.assertEquals("古雷马", userName);

  }

}

网页标题:利用Testng做参数化
标题网址:https://www.cdcxhl.com/article22/ijdhjc.html

成都网站建设公司_创新互联,为您提供标签优化建站公司网站策划搜索引擎优化品牌网站设计服务器托管

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计