关于项目自动化测试架构的改良计划 - 分离出动作指令信息
但是,我们这些动作指令信息毕竟是让测试用例数据的设计者告诉Engine怎样修改原始数据集合的,所以我们必须把这些信息分离出来,但是刚才一步骤,已经把这些片断移除了,那么怎么把这些信息拿到呢?很简单,不是我们有原始数据么,所以我们就可以对于原始数据的xml字符串,一个testcase,一个testcase的吧这些动作指令解析出来并且存放在相应的Value Object 列表中,以后我们只要根据这些列表中提供的信息就可以正确的对于原来的数据集合进行操作了。 分离信息的类叫XMLModifyInfoExtractor,它负责分离动作: 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 /** * 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步骤之后,我们的代码中所有的动作序列的执行内容都被存放在相应变量中了。 本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1221749,如需转载请自行联系原作者