但是,我们这些动作指令信息毕竟是让测试用例数据的设计者告诉Engine怎样修改原始数据集合的,所以我们必须把这些信息分离出来,但是刚才一步骤,已经把这些片断移除了,那么怎么把这些信息拿到呢?很简单,不是我们有原始数据么,所以我们就可以对于原始数据的xml字符串,一个testcase,一个testcase的吧这些动作指令解析出来并且存放在相应的Value Object 列表中,以后我们只要根据这些列表中提供的信息就可以正确的对于原来的数据集合进行操作了。
分离信息的类叫XMLModifyInfoExtractor,它负责分离动作:
代码如下:
/** * extract all the modification information and store to member fields. * @param filePath * @throws Exception */ public void extractModifyInfo(String filePath) throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File(filePath)); Element rootElement = document.getRootElement(); String testcaseElementPathValue; Element addElements; Element addElementPath; String addElementPathValue; Element addElementValue; String addElementValueValue; Element updateElements; Element updateElementPath; String updateElementPathValue; Element updateElementValue; String updateElementValueValue; Element removeElements; Element removeElementPath; String removeElementPathValue; //first ,get all the <test_case> element List<Element> testcaseElementList = rootElement.elements("test_case"); for(Element testcaseElement : testcaseElementList){ testcaseElementPathValue = testcaseElement.getUniquePath(); //get <add_elements> part from the <test_case> addElements= testcaseElement.element("add_elements"); if(addElements!=null){ //traverse the <add_elements> to get a seris of <add_element> List<Element> addElementList = addElements.elements("add_element"); for(Element addElement : addElementList){ //extract the <path> information from <add_element> addElementPath = addElement.element("path"); addElementPathValue = addElementPath.getTextTrim(); //extract the <value> information from <add_element> addElementValue = addElement.element("value"); String xmlValue=addElementValue.asXML(); //remove the <value> and </value> part from this xml addElementValueValue=xmlValue.replace("<value>","").replace("</value>",""); addElementInfoList.add (new AddElement(testcaseElementPathValue,addElementPathValue,addElementValueValue)); } } //get <update_elements> part from the <test_case> updateElements= testcaseElement.element("update_elements"); if(updateElements!=null){ //traverse the <update_elements> to get a seris of <update_element> List<Element> updateElementList = updateElements.elements("update_element"); for(Element updateElement : updateElementList){ //extract the <path> information from <update_element> updateElementPath = updateElement.element("path"); updateElementPathValue = updateElementPath.getTextTrim(); //extract the <value> information from <update_element> updateElementValue = updateElement.element("value"); updateElementValueValue=updateElementValue.getTextTrim(); updateElementInfoList.add (new UpdateElement(testcaseElementPathValue,updateElementPathValue,updateElementValueValue)); } } //get <remove_elements> part from the <test_case> removeElements= testcaseElement.element("remove_elements"); if(removeElements != null){ //traverse the <remove_elements> to get a seris of <remove_element> List<Element> removeElementList = removeElements.elements("remove_element"); for(Element removeElement : removeElementList){ //extract the <path> information from <remove_element> removeElementPath = removeElement.element("path"); removeElementPathValue = removeElementPath.getTextTrim(); removeElementInfoList.add(new RemoveElement(testcaseElementPathValue,removeElementPathValue)); } } } }
现在经过上述3步骤之后,我们的代码中所有的动作序列的执行内容都被存放在相应变量中了。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。