您的位置:首页 > 编程语言 > Java开发

自动化测试,javasript遍历JSON对象及XML对象

2016-03-20 20:30 393 查看
在web开发进行自动化测试时,通常需要定义测试的预期结果,在js执行ajax请求后需要对比返回结果和预期结果来判读测试是否通过。

测试的结果通常是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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: