TestNG - 使用ITestContext共享数据

TestNG - 使用ITestContext共享数据_第1张图片
image.png

令我不爽Apache Common Chain

我们希望实现用例间的数据共享,因为上一个用例执行完的返回值,可能正是下个用例需要的输入数据。
本来是用Chain实现的,但是令我不爽的是每个命令Command要新建一个Class。我们希望实现关键字驱动,如果一个关键字一个Class,并且关键字写得比较小,那简直是灾难啊……

TestNG - 使用ITestContext共享数据_第2张图片
image.png

方法1:使用TestNG的Depend

TestNG - 使用ITestContext共享数据_第3张图片
image.png

我试了下,如果定义了类成员变量,哪怕不用depend,照样可以取到值。缺点是必须在类里面定义一个对象。

方法2:使用ITestContext

TestNG - 使用ITestContext共享数据_第4张图片
image.png

这篇文章里,对ITestContext有更多解释,并且提供了一个登陆、获取token的例子,非常好!

http://www.ontestautomation.com/using-the-testng-itestcontext-to-create-smarter-rest-assured-tests/

**Since the ITestContext is created once and remains active for the duration of your test run, this is the perfect way to implement object sharing in your test suite. **

我写的实例:

import org.testng.ITestContext;
import org.testng.annotations.Test;

public class Demo {
    @Test
    public void keyword(ITestContext context){
        context.setAttribute("demoString", "Test Passing Value.");
    }

    @Test
    public void keywordPass(ITestContext context){
        System.out.println(context.getAttribute("demoString"));
    }
}

https://stackoverflow.com/questions/3115822/passing-output-of-one-test-method-to-another-method-testng
http://www.programcreek.com/java-api-examples/index.php?api=org.testng.ITestContext
https://rationaleemotions.wordpress.com/2014/02/13/sharing-data-across-tests-in-different-testclasses/

你可能感兴趣的:(TestNG - 使用ITestContext共享数据)