前面的章节中我们已经写代码实现了登录接口的处理调用,但是一个接口往往是需要多条测试用例才能完整的覆盖到每一种情况,针对于单接口多条测试用例需要执行的情况,该如何处理呢,可能很多人最先想到的就是:一条测试数据对应一个测试方法?下面有一个注册接口,我们基于此思路来编码实现接口的完整测试。
1) 接口业务:会员注册
2) 接口地址::8080/futureloan/mvc/api/member/register
3) 接口参数:mobilephone+pwd
4) 接口响应:json格式的报文
关于这个接口的更多详细的细节我们可以从公司提供的接口文档中获取,在公司里面做接口项目的测试,不管是自动化测试还是非自动化,都会有这样的一个文档描述接口项目中的每一个接口的细节,包括业务,接口地址,参数,响应报文中的字段以及格式,这是我们在测试前编写测试用例的重要参考文献,大部分接口文档的撰写都大同小异,关于接口的一些重要信息一般都会涵盖到,比如以下接口文档关于注册接口的描述:
现在我们整理得到一条正向用例和几条反向用例:
1.合格手机号,合格密码
2.重复以上的手机号,密码
3.传手机号,不传密码
4.不传手机号,传密码
5.不合格的手机号
6.合格的手机号,不合格密码
编写测试类,每条用例,准备一个测试方法:test1-test6对应上面每种测试情况:
test1方法(mobilephone:18999700122;pwd:123456):
@Test public void test1(){ String restUrl = "http://119.23.241.154:8080/futureloan/mvc/api/member/register"; //1.创建post对象,以post方式提交接口请求 HttpPost httpPost = new HttpPost(restUrl); //2.准备提交参数 List<NameValuePair> params = new ArrayList<NameValuePair>(); BasicNameValuePair basicNameValuePair1 = new BasicNameValuePair("mobilephone", "18999700122"); BasicNameValuePair basicNameValuePair2 = new BasicNameValuePair("pwd", "123456"); params.add(basicNameValuePair1); params.add(basicNameValuePair2); //3.参数封装到请求体当中 try { httpPost.setEntity(new UrlEncodedFormEntity(params)); System.out.println("method:"+httpPost.getMethod()); //4.准备客户端 CloseableHttpClient httpClient = HttpClients.createDefault(); //5.提交请求 CloseableHttpResponse httpResponse = httpClient.execute(httpPost); //6.解析接口返回数据,返回字符串 String result = EntityUtils.toString(httpResponse.getEntity()); //7.输出结果到控制台验证数据 System.out.println("*********返回数据:"+result); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }