如何使用TestNG将字符串从一个方法传递到另一个方法?

时间:2016-01-14 19:59:24

标签: java selenium automation testng

在我的测试中,我将在一个方法中捕获一个字符串,然后在另一个方法中使用它。这是我想要做的一个例子:

public class stackOverflowExample {

public static WebDriver driver;
public static Properties OR = null;

@Test
public void test_1() throws InterruptedException {

System.setProperty("webdriver.ie.driver","D:\\iedriver\\IEDriverServer.exe");               
driver=new InternetExplorerDriver();


 driver.get("http://www.google.com");

Thread.sleep(1500);

String string1 = driver.findElement(By.id("btnK")).getText();

System.out.println(string1);

}

public void test_2() {

  System.out.println(string1);


}
}

如何在test_2()方法中使用string1?

*编辑:

为了清楚我尝试这样做的原因,我正在进行以下测试:

  1. 登录User1
  2. 下的网站
  3. 创建新的抵押贷款申请
  4. 退出User1,然后在User2
  5. 下重新登录
  6. 然后,User2将打开新创建的抵押贷款申请并运行各种测试方案。

2 个答案:

答案 0 :(得分:0)

从技术上讲,你不打算做什么。单元测试意味着独立于每个。

同样afaik,执行测试时没有严格的排序。我的意思是,test_2()实际上可以在test_1()之前进行测试,因此无论如何string1都不可用于test_2()。测试也可以并行运行。

正确的方法是,IMO也是在test_2()中调用获取string1的调用...如果您认为在类中的每个测试都需要获取string1的这一步,请考虑使用@Before注释对于setup(),这是一个在所有测试之前执行并在类级别变量中存储string1的函数。

希望这有帮助。

答案 1 :(得分:0)

你想要它:

public class SomeTest {

    public static String string1 = null; // It's a global String

    @Test
    public void test1() {
        string1 = "blabla"; // Change value for global String
        System.out.println(string1); // Print value of global String
    }

    @Test
    public void test2() {
        System.out.println(string1); // Print value of global String
    }

}