众所周知,在现在这个移动互联网越来越发达的时代,瘦客户端和胖服务端的要求下,服务端的测试也变得越来越重要。而服务端的实现通常是通过HTTP请求的API和服务来实现的,而服务由于实现起来比较复杂,所以大多公司使用的还是HTTP请求的API接口来处理底层数据。在前面的博文中我们讲过了如何使用PHPUNIT框架和python的urllib2和reqests模块,来进行接口自动化测试。
可是很多同学比较善长java,如果想用这个来做接口自动化测试的化,还是有点儿麻烦的。因为没有具体的函数,需要利用HttpClient来模拟HTTP请求,并对接口的返回值进行处理才行。下面我们就讲解,如何用java来封装对HTTP请求的API来做自动化测试:
一、GET方式的请求
Get类请求分为有参数和无参数两种情况,如果没有参数,则直接通过接口调用地址进行请求,接收返回结果;如果有参数,则把参数添加进来,对请求的结果进行筛选。
public static String GetRequests(String url,String params) { StringBuffer response = new StringBuffer(); HttpClient client = new HttpClient(); HttpMethod method = new GetMethod(url); try { if (StringUtils.isNotBlank(params)) //对get请求参数做了http请求默认编码,好像没有任何问题,汉字编码后,就成为%式样的字符串 method.setQueryString(URIUtil.encodeQuery(params)); client.executeMethod(method); BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(),"utf-8")); String line; while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); } catch (URIException e) { System.out.println("执行HTTP Get请求时,编码查询字符串“" + params + "”发生异常!"); } catch (IOException e) { System.out.println("执行HTTP Get请求" + url + "时,发生异常!"); } finally { method.releaseConnection(); } return response.toString(); } |
代码分析:
(1)新建HttpClient和GetMethod,通过GetMethod来创建URL请求相关的URL和参数,然后通过HttpClient发起HTTP请求,接收返回结果。
(2)如果接口请求的参数不为空,则通过setQueryString()将参数和URL拼接到一起。
(3)通过HttpClient的getResponseBodyAsStream()来获取请求结果,并将结果添加到StringBuffer里面,最后以字符串的形式来返回。