Java 如何将一个@Test方法中生成的数据访问到另一个不同类中的测试方法 @Test(description=“生成访问令牌”) public void AuthenticationApiTC_30()引发IOException、SQLException{ Map positiveDataMap=operations.readRecordFromXls(XLSPATH,文件名,POSITIVESHEET); AuthenticateBuilder builder=新AuthenticateBuilder(); 响应=请求 .headers(builder.authHeaderBuilderForGetReq(positiveDataMap.get(“MobileEnumber”), positiveDataMap.get(“ssoToken”)、positiveDataMap.get(“osVersion”), positiveDataMap.get(“设备ID”)、positiveDataMap.get(“imsi”), positiveDataMap.get(“deviceIDType”)、positiveDataMap.get(“applicationID”), positiveDataMap.get(“版本”),positiveDataMap.get(“操作系统”)) .basePath(basePath) .get(); log.info(“AuthenticationApiTC_30\n”+response.prettyPrint()); PostValidators.checkMessageInResponse(response,SuccessMessage.Success); accessToken=Utils.extractDataFromResponse(响应,“result.accessToken”); log.info(“令牌字符串::”+accessToken); }

Java 如何将一个@Test方法中生成的数据访问到另一个不同类中的测试方法 @Test(description=“生成访问令牌”) public void AuthenticationApiTC_30()引发IOException、SQLException{ Map positiveDataMap=operations.readRecordFromXls(XLSPATH,文件名,POSITIVESHEET); AuthenticateBuilder builder=新AuthenticateBuilder(); 响应=请求 .headers(builder.authHeaderBuilderForGetReq(positiveDataMap.get(“MobileEnumber”), positiveDataMap.get(“ssoToken”)、positiveDataMap.get(“osVersion”), positiveDataMap.get(“设备ID”)、positiveDataMap.get(“imsi”), positiveDataMap.get(“deviceIDType”)、positiveDataMap.get(“applicationID”), positiveDataMap.get(“版本”),positiveDataMap.get(“操作系统”)) .basePath(basePath) .get(); log.info(“AuthenticationApiTC_30\n”+response.prettyPrint()); PostValidators.checkMessageInResponse(response,SuccessMessage.Success); accessToken=Utils.extractDataFromResponse(响应,“result.accessToken”); log.info(“令牌字符串::”+accessToken); },java,testng,rest-assured,Java,Testng,Rest Assured,我的要求是获取在上述@Test方法中生成的accessToken,并将其传递给不同类中的另一个@Test方法 注意:我必须一次又一次地执行这个过程,因为不同的用户和测试用例的访问令牌将不同。您仍然可以在测试类中使用正常的方法。您可以创建一个仅对某些测试方法调用的静态助手方法,而不是在每个测试方法上调用@Before方法。所以你可以这样做: @Test(description = "Generate access token") public void AuthenticationApiT

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


注意:我必须一次又一次地执行这个过程,因为不同的用户和测试用例的访问令牌将不同。

您仍然可以在测试类中使用正常的方法。您可以创建一个仅对某些测试方法调用的静态助手方法,而不是在每个测试方法上调用
@Before
方法。所以你可以这样做:

@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);
}

因此,您不需要重写任何请求令牌的代码,而是使用这个helper方法。

您不需要。原因之一是:您无法保证它们的运行顺序。它们应该彼此完全独立地运行。为什么不将需要运行的代码放在@Before中,或者放在从两个测试调用的方法中呢?@Stultuske,关于第一点,我不想每次都通过将该方法添加到“@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'
}