我正在使用qaf提供的bdd实现进行自动化测试,并使用qaf-support-ws进行Web服务测试。我发现使用具有TestNG功能的Web服务测试自动化所需的所有功能非常容易使用。它有助于简化UI和API编排。我们的beckend API需要进行身份验证,并使用cookie进行后续API调用。我可以通过实现ClientFilter
来传递coockie。我通过扩展RestClientFactory
创建了提供客户。添加了Coockie筛选器的客户端可以很好地处理对一个域的请求调用,并且每当我在不同域上发出请求时,都需要按以下方式重置客户端:
new RestTestBase().resetClient();
因此,我每次必须调用API进行身份验证。如果请求是针对同一域,则不需要重置客户端。还有其他更好的方法来管理Cookie吗?这样我就可以在不重置客户端的情况下使用多个域。
答案 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中找到。