接口测试及httpclient深入
来源:互联网 发布:排列三九宫图算法 编辑:程序博客网 时间:2024/05/01 18:55
接口测试--模拟登陆
场景:服务器根据浏览器中保存的本地cookie判断用户的有效身份
为了使得httpclient发送的请求包含相同的token(模拟浏览器发送请求,一次登陆后,token相同,即被认为是同一个用户的操作),进行如下操作:
1) httpclient模拟登陆后,获取token 并保存;
2) 之后httpclient发送请求前,使用步骤1) 中获取的token发送请求
以上步骤可以预防CSRF攻击,具体参考:
http://qa.blog.163.com/blog/static/1901470022015101293748737/
接口测试工具及特点
名称特点junit1)提供丰富API支持多种验证结果正确性的逻辑
2)通过参数化、@before、@after等特性,支持用例代码可复用
3)suite的模式支持case的批量运行
4)有展现良好的报表
5)与eclipse ide集成,使用方便
httpclient支持HTTP协议的客户端编程工具包.
1)封装实现了所有HTTP的方法,如GET,POST,PUT,HEAD
2)支持redirect,会话保持
3)支持文件上传
httpunitHTTP请求的测试辅助工具,能处理web测试的需求 .
相比于HttpClient,不同之处在于:
1)HttpUnit能对HTTP返回的结果页进行解析,比如DOM元素定位
2)HttpUnit能自己启动一个servlet来运行被测服务
htmlunitHtmlUnit相比HttpUnit功能更加强大,
HtmlUnit是Junit的扩展测试框架之一,开发者可以使用其提供的API对页面的元素进行操作。
页面的各种元素都可以被当作对象进行调用,对JavaScript的支持也比较好。
jwebunitJWebUnit以HttpUnit和JUnit为基础的一个web测试工具。
可以用来验证链接跳转、表单输入和提交、表格内容以及Web应用程序特性的正确性。
相比于HtmlUnit,JWebUnit封装的更友好,编写case也会更加简单
2)通过参数化、@before、@after等特性,支持用例代码可复用
3)suite的模式支持case的批量运行
4)有展现良好的报表
5)与eclipse ide集成,使用方便
httpclient支持HTTP协议的客户端编程工具包.
1)封装实现了所有HTTP的方法,如GET,POST,PUT,HEAD
2)支持redirect,会话保持
3)支持文件上传
httpunitHTTP请求的测试辅助工具,能处理web测试的需求 .
相比于HttpClient,不同之处在于:
1)HttpUnit能对HTTP返回的结果页进行解析,比如DOM元素定位
2)HttpUnit能自己启动一个servlet来运行被测服务
htmlunitHtmlUnit相比HttpUnit功能更加强大,
HtmlUnit是Junit的扩展测试框架之一,开发者可以使用其提供的API对页面的元素进行操作。
页面的各种元素都可以被当作对象进行调用,对JavaScript的支持也比较好。
jwebunitJWebUnit以HttpUnit和JUnit为基础的一个web测试工具。
可以用来验证链接跳转、表单输入和提交、表格内容以及Web应用程序特性的正确性。
相比于HtmlUnit,JWebUnit封装的更友好,编写case也会更加简单
以上摘录自:http://wenku.baidu.com/link?url=mjczcVqjnA61mXqhJLpirHxKg3k0vzK-RDVu3PzBGNFtKgN6hm_HuqBNXg-RwSqfg-7V0xmyNL_kTNgc1rwjuMUHfRRiAND7AstCjxOsZFu
深入httpclient
java 引入httpclient后,发送http请求获取json 与浏览器间接请求接口返回的json(手动调用url的json)的区别:
httpclient后,发送http请求获取json : 只保证array 中的顺序(与手动调用url返回的一致),其他顺序不保证(和手动调用url返回的json顺序不一致)
httpclient调接口返回的json :
手动调用url的json返回:
net.sf.json.JSONObject 和org.json.JSONObject 的差别
参考:http://my.oschina.net/wangwu91/blog/340721
不同的方面
JSONObject json = JSONObject.fromObject(str); String str = "";// 一个json串
JSONObject json = new JSONObject(str);解析json没有严格要求获取字段的类型跟getXXX()的类型一样
精度可能会丢失获取的字段类型必须跟getXXX()的类型一样
精度不会丢失
从json中获取数组可以使用if(o instanceof JSONArray) 判断类型可能抛异常:JSONArray subArray =obj.getJSONArray(key)size大小(数组)int leng = subArray.size();int leng = subArray.length();
net.sf.json.JSONObject
org.json.JSONObject
创建json对象//没有 new JSONObject(String)的构造方法JSONObject json = JSONObject.fromObject(str); String str = "";// 一个json串
JSONObject json = new JSONObject(str);解析json没有严格要求获取字段的类型跟getXXX()的类型一样
精度可能会丢失获取的字段类型必须跟getXXX()的类型一样
精度不会丢失
从json中获取数组可以使用if(o instanceof JSONArray) 判断类型可能抛异常:JSONArray subArray =obj.getJSONArray(key)size大小(数组)int leng = subArray.size();int leng = subArray.length();
建议: 为了遍历的方便和,不抛出异常,建议使用 net.sf.json.JSONObject
httpclient设置超时时间
- 设置的用途
不设置的后果就是一旦对方服务器出现无响应的情况,如果有返回(404 50x)错误还好,没有返回的话,java线程会一直等待。设置后,超时系统抛出异常。
- 超时时间类型
A 连接超时(connectionTimeout ): 连接一个url的连接等待时间
例如:
client.getHttpConnectionManager().getParams().setConnectionTimeout(3000);
读取数据超时(soTimeout ):连接上一个url,获取response的返回等待时间
例如:
client.getHttpConnectionManager().getParams().setSoTimeout(2000);
httpclient4的设置方式和httpclient3有所不同,代码如下:
HttpClient httpclient =newDefaultHttpClient();
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,Config.20000);//连接时间20shttpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,60000);//数据传输时间60s
DefaultHttpClient 设置超时机制 DefaultHttpClient client = new DefaultHttpClient();client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 15000);client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 15000);
0 0
- 接口测试及httpclient深入
- 接口测试及httpclient深入
- testNG+httpclient接口测试
- 接口测试 - httpClient
- 接口测试之HttpClient
- HttpClient天气接口测试
- HttpClient之接口测试
- HttpClient测试接口Test
- HttpClient 接口测试遇到的问题及解决方案
- 使用HttpClient实现接口测试
- 使用httpClient进行接口测试
- HttpClient接口测试问题汇总
- httpclient自己写接口性能测试脚本
- 使用HttpClient进行远程接口测试
- 使用HttpClient测试SpringMVC的接口
- Excel+Httpclient,数据驱动接口自动化测试
- HttpClient +Testng(1)进行接口测试入门
- Url接口测试:HttpClient模拟登录效果
- redigo代码分析-pool
- UNITY3D音频管理器
- MySQL笔记 一
- Oracle事物中的savepoint
- java网络编程
- 接口测试及httpclient深入
- Spring MVC总结
- C++结构体与指针
- oracle 变量使用
- android studio无法识别含有rcs包名的jar
- 存储过程 基本语法
- 中文分词算法总结
- UE4环境搭建注意事项
- 欢迎使用CSDN-markdown编辑器