自动化测试,javasript遍历JSON对象及XML对象
2016-03-20 20:30
393 查看
在web开发进行自动化测试时,通常需要定义测试的预期结果,在js执行ajax请求后需要对比返回结果和预期结果来判读测试是否通过。
测试的结果通常是json格式或xml格式,因此需要对json和xml进行解析。
解析JSON--JSON遍历
解析XML--XML遍历
xml dom更多的信息 http://www.w3school.com.cn/xmldom/index.asp
欢迎转载,转载请注明出处http://blog.csdn.net/musa875643dn/article/details/50938308
测试的结果通常是json格式或xml格式,因此需要对json和xml进行解析。
解析JSON--JSON遍历
//对比JSON格式的数据是否匹配 function compareJSONResult(expectResult, returnResult){ var type = typeof expectResult; if(type=='object'){ //是对象 if(typeof expectResult !='object'){ return false; } if(expectResult instanceof Array){ //是数组类型的对象 if(!(returnResult instanceof Array)){ return false; } var expectNum = expectResult.length; var returnNum = returnResult.length; if(expectNum!=returnNum){ return false; } for(var i =0; i< expectNum; i++){ var expectName = expectResult[i]; var returnName = returnResult[i]; if(!compareJSONResult(expectName, returnName)){ return false; } } return true; }else{ //是普通对象 for(var expectName in expectResult){ var expectValue = expectResult[expectName]; var foundMatchName = false; var returnValue; for(var returnName in returnResult){ if(expectName==returnName){ foundMatchName = true; returnValue = returnResult[expectName]; break; } } if(!foundMatchName){ return false; }else{ if(!compareJSONResult(expectValue,returnValue)){ return false; } } } return true; } }else{ //不是对象类型 return expectResult==returnResult; } }
解析XML--XML遍历
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="html">//对比XML格式的数据是否匹配 function compareXMLResult(expectResult, returnResult){ if(expectResult.hasOwnProperty()){ if(!returnResult.hasOwnProperty()){ return false; } var expectAttributes =expectResult.attributes; var returnAttributes =returnResult.attributes; if(expectAttributes.length!=returnAttributes.length){ return false; } for(var i=0; i< expectAttributes.length;i++){ var expeAttr = expectAttributes[i]; var retAttr ; var isFound=false; for(var j=0; j<returnAttributes.length;j++){ retAttr = returnAttributes[j]; if(expeAttr.name==retAttr.name){ isFound = true; break; } } if(isFound){ if(expeAttr.value!=retAttr.value){ return false } }else{ return false; } } } if(expectResult.hasChildNodes()){ if(!returnResult.hasChildNodes()){ return false; } for(var i=0; i<expectResult.childNodes.length;i++){ var expectNode = expectResult.childNodes[i]; var returnNode = returnResult.childNodes[i]; if(!compareXMLResult(expectNode,returnNode)){ return false; } } return true; }else{ if(expectResult.nodeValue!=returnResult.nodeValue){ return false; }else{ return true; } } }
xml dom更多的信息 http://www.w3school.com.cn/xmldom/index.asp
欢迎转载,转载请注明出处http://blog.csdn.net/musa875643dn/article/details/50938308
相关文章推荐
- java.net.BindException: bind failed: EACCES (Permission denied)
- 上文程序的调优
- JAVA大数
- 《Java程序设计》第3周学习总结
- Java.util.Stack类的peek()方法
- Struts2综述
- java对象数组
- java 读取mysql库表数据
- java 线程同步中的对象锁 ReentrantLock
- hibernate tools for eclipse plugins 下载安装
- Android JNI开发之NDK环境配置(eclipse)
- java 内存映射效率好高啊
- 20145331 《Java程序设计》第3周学习总结
- 安装和配置Eclipse以及android开发环境
- 20145308刘昊阳 《Java程序设计》第3周学习总结
- [Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类
- java中的移位运算符:<<,>>,>>>总结
- 关于java实现的求素数的几种方法
- Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法