1

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

new RestTestBase().resetClient();

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

4

1 回答 1

1

另一种更简单的方法是使用 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;
}

使用此实现,您在请求另一个域时不需要重置客户端,反之亦然。完整的例子可以在这里找到。

于 2019-05-15T01:03:41.177 回答