溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

關(guān)于項(xiàng)目自動(dòng)化測(cè)試架構(gòu)的改良計(jì)劃 - 分離出動(dòng)作指令信息

發(fā)布時(shí)間:2020-06-26 05:04:24 來(lái)源:網(wǎng)絡(luò) 閱讀:304 作者:charles_wang888 欄目:軟件技術(shù)


但是,我們這些動(dòng)作指令信息畢竟是讓測(cè)試用例數(shù)據(jù)的設(shè)計(jì)者告訴Engine怎樣修改原始數(shù)據(jù)集合的,所以我們必須把這些信息分離出來(lái),但是剛才一步驟,已經(jīng)把這些片斷移除了,那么怎么把這些信息拿到呢?很簡(jiǎn)單,不是我們有原始數(shù)據(jù)么,所以我們就可以對(duì)于原始數(shù)據(jù)的xml字符串,一個(gè)testcase,一個(gè)testcase的吧這些動(dòng)作指令解析出來(lái)并且存放在相應(yīng)的Value Object 列表中,以后我們只要根據(jù)這些列表中提供的信息就可以正確的對(duì)于原來(lái)的數(shù)據(jù)集合進(jìn)行操作了。


分離信息的類(lèi)叫XMLModifyInfoExtractor,它負(fù)責(zé)分離動(dòng)作:

代碼如下:

/**
     * 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));
            }
                 
            }
        }
             
                         
    }


現(xiàn)在經(jīng)過(guò)上述3步驟之后,我們的代碼中所有的動(dòng)作序列的執(zhí)行內(nèi)容都被存放在相應(yīng)變量中了。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI