接口测试用例代码

来源:互联网 发布:js判断是否出现滚动条 编辑:程序博客网 时间:2024/06/05 17:47
最近我们组准备开始M项目的接口测试,之前有接触过直接用浏览器或者第三方的工具直接向接口发送请求,检查返回的数据是否正确。本次接口用例代码使用java+TestNg编写,菜鸟级别的我慢慢开始研究和学习,对稍微懂一点的人来说可能都是很简单操作,虽然简单是我慢慢积累的过程,记录下来方便以后复习。
一、使用Fiddler2获取接口:
Fiddler2是一个网络调试代理,用来监测本地计算机和Internet之间所有的HTTP通讯,这是一个强大的工具,可惜我现在只会用个皮毛。打开Fiddler2,在浏览器中输入M网站地址,软件左边就可以看到这个网站的所有HTTP请求(若没有请求,确认浏览器是否设置为使用系统代理之类),查找Http状态为200的请求,再在这些请求里面筛选(还是能比较明显的判断出来哪些是哪些不是的)。点中某个请求,可以在右侧看到该请求的详细信息。如果请求过多看的眼花缭乱,可以通过过滤器进行过滤,关于Fiddler2更多功能的使用就不多介绍,网上有很多资料http://www.2cto.com/Article/201304/204560.html。
二、用例设计
主席已经给我们设计好了几个接口,刚开始当然是先对主席已经写好的用例进行了解,了解每个方法、每行代码实现的功能,在我理解,主要是使用GET或POST方式来请求一个页面或者内容,对请求到的内容进行处理。HttpGet和HttpPost的使用大同小异,无论是使用HttpGet,还是HttpPost,都必须通过如下3步来访问HTTP资源。
1、创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。
2、使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。
3、通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。
我下载的工程代码里这些操作已经封装到HttpRequest类里面,可以直接使用,非常方便。大概了解之后根据主席的用例代码照葫芦画瓢,在整理好的接口列表中选择了几个简单的接口进行练习。设计获取个人资料接口时,比较简单,只要设置好url及请求的参数,直接发起请求获取返回的数据,检查数据是否正确即可。
获取个人资料接口主要代码:

//设置需要请求服务器的url

String url = yxpFixture.ystoreWebAppURL+"/profile/index";List<NameValuePair> headers = new ArrayList<NameValuePair>();//设置heaserheaders.add(new BasicNameValuePair("Accept", "application/json, text/plain, */*"));headers.add(new BasicNameValuePair("Content-Type", "application/json;charset=UTF-8"));

//发起get请求获取返回HttpResponseString responseSrc = HttpRequest.get(client, url, headers);

在设计保存个人资料代码时,我知道这是一个post请求,所有参照了主席的删除购物车的post请求,设置url和post的参数,发起请求。
购物车删除代码:

String url = yxpFixture.ystoreWebAppURL+"/cart/delete.json";List<NameValuePair> entity = new ArrayList<NameValuePair>();// 设置entityentity.add(new BasicNameValuePair("genMyCartParamJson", "{\"cartIdAndPromoIdMap\":null,\"ordPromoId\":null,\"couponCode\":null,\"cartIdSetOfSelected\":[]}"));entity.add(new BasicNameValuePair("ids", itemId));// 提交删除请求String response = HttpRequest.post((DefaultHttpClient) client, url, entity, headers, HTTP.UTF_8);


保存个人资料接口错误代码:

String url = yxpFixture.ystoreWebAppURL+"/profile/save.json";List<NameValuePair> headers = new ArrayList<NameValuePair>();List<NameValuePair> entity = new ArrayList<NameValuePair>();// 设置entityentity.add(new BasicNameValuePair("realName", "小强"));entity.add(new BasicNameValuePair("mobile", 13575xxxx64”));

entity.add(new BasicNameValuePair("email", test@126.com”);

......// 提交保存请求String response = HttpRequest.post((DefaultHttpClient) client, url, entity, headers, HTTP.UTF_8);

执行后报错,返回了HTTP 415的错误( 不支持的媒体类型),估计是请求设置的参数不对。通过火狐的firebug插件分析请求的数据,哎!还真不一样,删除购物车的post参数是这样子的:
接口测试用例代码学习 - 姚晓群 - 啦啦
而保存个人资料的post是这样子:
接口测试用例代码学习 - 姚晓群 - 啦啦
 保存资料传的是一个JSON字符串,度娘告诉我可以把字符串封装成JSON对象,封装完成,我再次尝试:

......

List<NameValuePair> headers = new ArrayList<NameValuePair>();List<NameValuePair> entity = new ArrayList<NameValuePair>();entity.add(new BasicNameValuePair("profile",jo.toString()));entity.add(new BasicNameValuePair("userProperty",jo1.toString()));String retSrc =HttpRequest.post((DefaultHttpClient)client, url, entity, headers, HTTP.UTF_8);

......

还是报HTTP 415错误,打印出的entity格式是不符合post源代码的要求,重新写。目前找到了一种很笨拙的方式暂时解决:拼接出正确的格式,直接使用HttpPost方法提交HTTP POST请求,可以正确提交:

......

HttpPost httpPost = new HttpPost(url);StringEntity entity = new StringEntity(obj3.toString(), HTTP.UTF_8);entity.setContentType("application/json");httpPost.setEntity(entity);HttpResponse httpResponse = client.execute(httpPost);String retSrc = EntityUtils.toString(httpResponse.getEntity());//使用EntityUtils对返回值的实体进行处理

......

最终完成的不是很完美,都是自己摸索和学习的过程,目前开始研究购买、订单提交、组单等接口,也是慢慢摸索完成吧。
原创粉丝点击