如何使用 qaf Web 服务请求调用管理具有多个请求的 cookie?

How to manage cookies with multiple requests with qaf web services request call?

我正在使用 qaf 提供的 bdd 实现进行测试自动化,并使用 qaf-support-ws 进行 Web 服务测试。我发现使用 TestNG 强大的 Web 服务测试自动化所需的各种功能非常容易。它有助于轻松 UI 和 API 编排。我们的后端 API 需要身份验证并使用 cookie 进行后续 API 调用。我能够通过 ClientFilter 的实现来传递 coockie。我通过扩展 RestClientFactory 创建了提供客户端。我的客户端添加了 Coockie 过滤器,可以很好地处理一个域的请求调用,每当我对不同域有请求时,我需要按如下方式重置客户端:

new RestTestBase().resetClient();

因此,我每次都必须调用 API 进行身份验证。如果请求针对同一域,我不需要重置客户端。还有其他更好的方式来管理 cookies 吗?这样我就可以在不重置客户端的情况下使用多个域。

另一种更简单的方法是使用 Apache HTTP 客户端,如下所示:

protected Client createClient() {
        HttpClient httpClient = new HttpClient();
        ApacheHttpClientConfig config = new DefaultApacheHttpClientConfig();
        config.getProperties().put(ApacheHttpClientConfig.PROPERTY_HANDLE_COOKIES, true);
        // ApacheHttpClient httpClient = ApacheHttpClient.create(config);
        ApacheHttpClientHandler clientHandler = new ApacheHttpClientHandler(httpClient, config);
        ClientHandler root = new ApacheHttpClient(clientHandler);

        Client client = new Client(root, config);
        return client;
}

使用此实现,您在请求另一个域和 wise-versa 时不需要重置客户端。可以找到完整的示例 here