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> <!-- Test -->

</suite> <!-- Suite -->

.testng.xml文件中通过<parameter/>设置参数、参数值,但要注意范围,<suite><test>标签定义了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);

  }

### TestNG 自动化测试框架学习教程 #### 了解TestNG的特点和优势 TestNG不仅继承了JUnit和NUnit的优点,还引入了许多新的特性使其更加灵活和强大。作为单元测试工具的同时也支持集成自动化测试,这使得其应用范围更为广泛[^1]。 #### 设计思路和技术选型 构建基于Java项目的自动化测试框架时,选择合适的工具至关重要。对于希望提升测试效率并保持高代码质量的团队来说,采用像TestNG这样的成熟解决方案是一个明智的选择。通过合理规划框架结构以及选用恰当的技术栈,可以有效促进持续集成/部署流程的发展[^2]。 #### 创建第一个简单的TestNG测试类 下面展示了一个基本的例子来说明如何编写一个简单的TestNG测试案例: ```java import org.testng.Assert; import org.testng.annotations.Test; public class SimpleTest { @Test public void testAddition() { int result = 5 + 7; Assert.assertEquals(result, 12); } } ``` 这段代码定义了一个名为`SimpleTest`的类,在其中包含了单个方法用于验证加法运算的结果是否正确。这里使用了@Test注解标记该函数为测试用例,并调用了Assert类中的assertEquals静态方法来进行断言操作。 #### 实现页面对象模型(POM) 为了使测试更具可维护性和扩展性,推荐按照Page Object Model (POM)模式组织UI交互逻辑。此设计方式有助于分离业务逻辑与界面元素定位策略,从而简化后续修改工作量。具体做法是在单独文件里封装特定网页上的所有组件及其行为,然后让具体的测试场景去实例化相应的页面对象并与之互动[^5]。 #### 配置运行参数及报告生成 除了编写实际的测试脚本外,还需要考虑怎样配置执行选项(比如浏览器类型、并发数等),并且设置好结果汇报机制以便于分析失败原因。幸运的是,TestNG自带了一套完善的XML配置体系允许自定义这些方面;另外借助第三方插件如ExtentReports还可以获得更美观详细的HTML格式报表输出[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值