如何将一个@Test方法中生成的数据访问另一种不同类别的测试方法

时间:2018-11-06 06:43:52

标签: java testng rest-assured

@Test(description = "Generate access token")
    public void AuthenticationApiTC_30() throws IOException, SQLException {

    Map<String, String> positiveDataMap = operations.readRecordFromXls(XLSPATH, FILENAME, POSITIVESHEET);
    AuthenticateBuilder builder = new AuthenticateBuilder();
    Response response = REQUEST
            .headers(builder.authHeaderBuilderForGetReq(positiveDataMap.get("mobilenumber"),
                    positiveDataMap.get("ssoToken"), positiveDataMap.get("osVersion"),
                    positiveDataMap.get("deviceID"), positiveDataMap.get("imsi"),
                    positiveDataMap.get("deviceIDType"), positiveDataMap.get("applicationID"),
                    positiveDataMap.get("version"), positiveDataMap.get("os")))
            .basePath(BASEPATH)
            .get();

    log.info("AuthenticationApiTC_30\n" + response.prettyPrint());
    PostValidators.checkMessageInResponse(response, SuccessMessage.Success);
    accessToken =  Utils.extractDataFromResponse(response, "result.accessToken");
    log.info("Token string :: " + accessToken);
}

我的要求是获取在以上accessToken方法中生成的@Test并将其传递给存在于不同类中的另一个@Test方法。

P.S:我必须一次又一次地执行此过程,因为accessToken对于不同的用户和测试用例将有所不同。

1 个答案:

答案 0 :(得分:1)

您仍然可以在测试类中使用常规方法。您可以创建一个仅对某些测试方法调用的静态帮助器方法,而不是使用在每个测试方法均调用的@Before方法。因此,您可以执行以下操作:

public static Foobar requestToken() {
    // ...
}

@Test
public void someTestMethod() {
    Foobar x = TestClass.requestToken();

    // work with 'x'
}

@Test
public void someOtherTestMethod() {
    Foobar x = TestClass.requestToken();

    // do other test with 'x'
}

因此,您无需重写任何请求令牌的代码,而使用此帮助方法。