如何在TestNG中将变量从BeforeTest传递到Test注解?


一个TestNG类可以包含各种TestNG方法,例如@BeforeTest,@AfterTest, @BeforeSuite, @BeforeClass, @BeforeMethod, @test等。在许多情况下,我们需要将一些变量从这些方法传递到主要的@Test方法。由于这些方法都不支持return类型,所以传递变量的最佳方法是使用类/实例变量,而不是局部变量。

类/实例变量的作用域在整个类中。因此,在@BeforeTest@BeforeMethod中设置的任何值都可以在@Test方法中使用。

在本文中,我们将学习如何在TestNG中将变量从@BeforeTest传递到@Test注解。

解决此问题的方法/算法

  • 步骤1 - 创建一个TestNG类NewTestngClass并声明一个名为employeeName的变量。

  • 步骤2 - 在@BeforeTest中写入以下代码:

public void name() {
   employeeName = "Ashish";
   System.out.println("employeeName is: "+employeeName);
}
  • 步骤3 - 在NewTestngClass类中编写一个@Test方法,并使用代码中描述的变量employeeName

  • 步骤4 - 现在创建如下所示的testNG.xml来运行TestNG类。

  • 步骤5 - 最后,运行testNG.xml或直接在IDE中运行TestNG类,或者使用命令行编译并运行它。

示例

以下是常用TestNG类NewTestngClass的代码:

src/ NewTestngClass.java

import org.testng.annotations.*;
public class NewTestngClass {
   String employeeName;
   // test case 1
   @Test()
   public void testCase1() throws InterruptedException {
      System.out.println("in test case 1 of NewTestngClass");
      String employeeFullName = employeeName + " Anand";
      System.out.println("employeeFullName is: "+employeeFullName);
   }
   @BeforeTest
   public void name() {
      employeeName = "Ashish";
      System.out.println("employeeName is: "+employeeName);
   }
}

testng.xml

这是一个配置文件,用于组织和运行TestNG测试用例。当只需要执行有限的测试而不是完整的套件时,它非常方便。

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "NewTestngClass"/>
      </classes>
   </test>
</suite>

输出

employeeName is: Ashish
in test case 1 of NewTestngClass
employeeFullName is: Ashish Anand
===============================================
Suite1
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================

更新于: 2022年1月12日

2K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告