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

时间:2019-05-15 00:43:53

标签: java web-services testng bdd qaf

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

new RestTestBase().resetClient();

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

1 个答案:

答案 0 :(得分: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;
}

使用此实现,您在请求其他域时不需要重置客户端,反之亦然。完整的示例可以在here中找到。