2010-11-19 1 views
0

Kaum zu hören, wie man das macht A) weniger hässlich B) Halten Sie sich an einige grundlegende Programmierprinzipien! Ich verwende SOAPUI, also bedeutet jeder Verweis auf Eigenschaften, dass etwas in einem Testfall-Eigenschaftsschritt gespeichert wird.Groovy-Code zum Durchlaufen von GET-Anfragen und Zählen von Knoten

Ich möchte ein Wörterbuch verwenden, aber bin verloren, wo ich anfangen sollte. Ich weiß nur, dass die if-Anweisungen unten für einige sehr hässliche und fehleranfällige Codes gemacht wurden.

Alle Ratschläge, wie wichtig auch immer, sind willkommen. Ich möchte mich verbessern!

import java.text.* 
    import java.util.* 

    def xmlSlurper = new groovy.util.XmlSlurper() 

    // Get the previous total for number of journals 
    def journalCountProp = testRunner.testCase.getTestStepByName("Properties") 
    def journalCountTotal = journalCountProp.getPropertyValue("journalCount") 
    log.info " Previous JournalCount from last run: "+journalCountTotal 

    def lastOffsetProp = testRunner.testCase.getTestStepByName("Properties") 
    def lastOffsetHolder = lastOffsetProp.getPropertyValue("offset") 
    log.info " Previous offset from last run: "+lastOffsetHolder 

    // Get the response for a given timeline 
    def response = xmlSlurper.parseText(context.expand('${GET Journal using Offset#Response}')); 
    def currentJournalCount = response.Journals.Journal.size() 
    log.info " Number of Journals in this Run: "+currentJournalCount 

    //Getting the date from the last Journal (including an offset as the array count starts at 0) 
    def lastDate = response.Journals.Journal[currentJournalCount-1].JournalDate 
    log.info " Date from this response: "+lastDate 

    //Add up the Journals total for a given date. 
    journalCountProp.setPropertyValue("journalQueryDate", String.valueOf(lastDate)) 

    def countJournalAsInt 
    def offsetCountAsInt 

    def accTypeBank = context.expand('${Properties#accTypeBankProp}').toInteger() 
    //log.info "AccountType - BANK : "+accTypeBank 
    def accTypeBankProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeBankTotal = accTypeBankProp.getPropertyValue("accTypeBankProp") 

    def accTypeCURRENT = context.expand('${Properties#accTypeCURRENTProp}').toInteger() 
    //log.info "AccountType - Current : "+accTypeCURRENT 
    def accTypeCURRENTProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeCURRENTTotal = accTypeCURRENTProp.getPropertyValue("accTypeCURRENTProp") 

    def accTypeCURRLIAB = context.expand('${Properties#accTypeCURRLIABProp}').toInteger() 
    //log.info "AccountType - CURRLIAB : "+accTypeCURRLIAB 
    def accTypeCURRLIABProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeCURRLIABTotal = accTypeCURRLIABProp.getPropertyValue("accTypeCURRLIABProp") 

    def accTypeDEPRECIATN = context.expand('${Properties#accTypeCURRLIABProp}').toInteger() 
    //log.info "AccountType - DEPRECIATN : "+accTypeDEPRECIATN 
    def accTypeDEPRECIATNProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeDEPRECIATNTotal = accTypeDEPRECIATNProp.getPropertyValue("accTypeDEPRECIATNProp") 

    def accTypeDIRECTCOSTS = context.expand('${Properties#accTypeCURRLIABProp}').toInteger() 
    //log.info "AccountType - DIRECTCOSTS : "+accTypeDIRECTCOSTS 
    def accTypeDIRECTCOSTSProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeDIRECTCOSTSTotal = accTypeDIRECTCOSTSProp.getPropertyValue("accTypeDIRECTCOSTSProp") 

    def accTypeEQUITY = context.expand('${Properties#accTypeEQUITYProp}').toInteger() 
    //log.info "AccountType - EQUITY : "+accTypeEQUITY 
    def accTypeEQUITYProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeEQUITYTotal = accTypeEQUITYProp.getPropertyValue("accTypeEQUITYProp") 

    def accTypeEXPENSE = context.expand('${Properties#accTypeEXPENSEProp}').toInteger() 
    //log.info "AccountType - EXPENSE : "+accTypeEXPENSE 
    def accTypeEXPENSEProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeEXPENSETotal = accTypeEXPENSEProp.getPropertyValue("accTypeCURRLIABProp") 

    def accTypeFIXED = context.expand('${Properties#accTypeFIXEDProp}').toInteger() 
    //log.info "AccountType - FIXED : "+accTypeFIXED 
    def accTypeFIXEDProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeFIXEDTotal = accTypeFIXEDProp.getPropertyValue("accTypeFIXEDProp") 

    def accTypeLIABILITY = context.expand('${Properties#accTypeLIABILITYProp}').toInteger() 
    //log.info "AccountType - LIABILITY : "+accTypeLIABILITY 
    def accTypeLIABILITYProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeLIABILITYTotal = accTypeLIABILITYProp.getPropertyValue("accTypeLIABILITYProp") 

    def accTypeOTHERINCOME = context.expand('${Properties#accTypeOTHERINCOMEProp}').toInteger() 
    //log.info "AccountType - OTHERINCOME : "+accTypeOTHERINCOME 
    def accTypeOTHERINCOMEProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeOTHERINCOMETotal = accTypeOTHERINCOMEProp.getPropertyValue("accTypeOTHERINCOMEProp") 

    def accTypeOVERHEADS = context.expand('${Properties#accTypeOVERHEADSProp}').toInteger() 
    //log.info "AccountType - OVERHEADS : "+accTypeOVERHEADS 
    def accTypeOVERHEADSProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeOVERHEADSTotal = accTypeOVERHEADSProp.getPropertyValue("accTypeOVERHEADSProp") 

    def accTypeREVENUE = context.expand('${Properties#accTypeREVENUEProp}').toInteger() 
    //log.info "AccountType - REVENUE : "+accTypeREVENUE 
    def accTypeREVENUEProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeREVENUETotal = accTypeREVENUEProp.getPropertyValue("accTypeREVENUEProp") 

    def accTypeSALES = context.expand('${Properties#accTypeSALESProp}').toInteger() 
    //log.info "AccountType - SALES : "+accTypeSALES 
    def accTypeSALESProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeSALESTotal = accTypeSALESProp.getPropertyValue("accTypeSALESProp") 

    def accTypeTERMLIAB = context.expand('${Properties#accTypeTERMLIABProp}').toInteger() 
    //log.info "AccountType - TERMLIAB : "+accTypeTERMLIAB 
    def accTypeTERMLIABProp = testRunner.testCase.getTestStepByName("Properties") 
    def accTypeTERMLIABTotal = accTypeTERMLIABProp.getPropertyValue("accTypeTERMLIABProp") 

    def journalLineItems = response.Journals.Journal.JournalLines 

    if(currentJournalCount < 100) 
     { 
     log.info " Nothing to see here - looks like we've reached the end of the journals" 
     //add existing total to current response total 
     log.info " JournalCount: "+(journalCountTotal.toInteger() + currentJournalCount.toInteger()) 
     offsetCountAsInt =journalCountTotal.toInteger() + currentJournalCount.toInteger() 
     journalCountProp.setPropertyValue("journalCount",String.valueOf(offsetCountAsInt)) 


     for (lineItem in journalLineItems.JournalLine) 
     { 
      log.info "NOTE: From <100 Loop: "+lineItem.AccountType 
      if (lineItem.AccountType == 'BANK') 
      {   
       accTypeBank++ 
       accTypeBankProp.setPropertyValue("accTypeBankProp",String.valueOf(accTypeBank)) 
       } 
      if (lineItem.AccountType == 'CURRENT') 
      { 
       accTypeCURRENT++  
       accTypeCURRENTProp.setPropertyValue("accTypeCURRENTProp",String.valueOf(accTypeCURRENT))   
       } 
      if (lineItem.AccountType == 'CURRLIAB') 
      { accTypeCURRLIAB++ 
       accTypeCURRLIABProp.setPropertyValue("accTypeCURRLIABProp",String.valueOf(accTypeCURRENT)) 
       } 
      if (lineItem.AccountType == 'DEPRECIATN') 
      {   
       accTypeDEPRECIATN++ 
       accTypeDEPRECIATNProp.setPropertyValue("accTypeDEPRECIATNProp",String.valueOf(accTypeDEPRECIATN)) 
       } 
      if (lineItem.AccountType == 'DIRECTCOSTS') 
      {   
       accTypeDIRECTCOSTS++ 
       accTypeDEPRECIATNProp.setPropertyValue("accTypeDIRECTCOSTSProp",String.valueOf(accTypeDIRECTCOSTS)) 
      } 
      if (lineItem.AccountType == 'EQUITY') 
      {   
       accTypeEQUITY++ 
       accTypeEQUITYProp.setPropertyValue("accTypeEQUITYProp",String.valueOf(accTypeEQUITY)) 
       } 
      if (lineItem.AccountType == 'EXPENSE') 
      {   
       accTypeEXPENSE++ 
       accTypeEXPENSEProp.setPropertyValue("accTypeEXPENSEProp",String.valueOf(accTypeEXPENSE)) 
       } 
      if (lineItem.AccountType == 'FIXED') 
      {   
       accTypeFIXED++ 
       accTypeFIXEDProp.setPropertyValue("accTypeFIXEDProp",String.valueOf(accTypeFIXED)) 
      } 
      if (lineItem.AccountType == 'LIABILITY') 
      {   
       accTypeLIABILITY++ 
       accTypeLIABILITYProp.setPropertyValue("accTypeLIABILITYProp",String.valueOf(accTypeLIABILITY)) 
       } 
      if (lineItem.AccountType == 'OTHERINCOME') 
      {   
       accTypeOTHERINCOME++ 
       accTypeOTHERINCOMEProp.setPropertyValue("accTypeOTHERINCOMEProp",String.valueOf(accTypeOTHERINCOME)) 
       } 
      if (lineItem.AccountType == 'OVERHEADS') 
      {   
       accTypeOVERHEADS++ 
       accTypeOVERHEADSProp.setPropertyValue("accTypeOVERHEADSProp",String.valueOf(accTypeOVERHEADS)) 
      } 
      if (lineItem.AccountType == 'REVENUE') 
      {   
       accTypeREVENUE++ 
       accTypeREVENUEProp.setPropertyValue("accTypeREVENUEProp",String.valueOf(accTypeREVENUE)) 
       } 
      if (lineItem.AccountType == 'SALES') 
      { 
       accTypeSALES++ 
       accTypeSALESProp.setPropertyValue("accTypeSALESProp",String.valueOf(accTypeSALES)) 
       } 
      if (lineItem.AccountType == 'TERMLIAB') 
      {   
       accTypeTERMLIAB++ 
       accTypeTERMLIABProp.setPropertyValue("accTypeTERMLIABProp",String.valueOf(accTypeTERMLIAB)) 
       } 

     } 

     } 
    else 
     { 
     countJournalAsInt = journalCountTotal.toInteger() + currentJournalCount.toInteger() 
     journalCountProp.setPropertyValue("journalCount", String.valueOf(countJournalAsInt)) 

     log.info "last offset "+lastOffsetHolder 
     offsetCountAsInt = lastOffsetHolder.toInteger()+100 

     journalCountProp.setPropertyValue("offset",String.valueOf(offsetCountAsInt)) 

     for (lineItem in journalLineItems.JournalLine) 
     { 
      log.info "NOTE: From main loop: "+lineItem.AccountType 
      if (lineItem.AccountType == 'BANK') 
      {   
       accTypeBank++ 
       accTypeBankProp.setPropertyValue("accTypeBankProp",String.valueOf(accTypeBank)) 
       } 
      if (lineItem.AccountType == 'CURRENT') 
      { 
       accTypeCURRENT++  
       accTypeCURRENTProp.setPropertyValue("accTypeCURRENTProp",String.valueOf(accTypeCURRENT))   
       } 
      if (lineItem.AccountType == 'CURRLIAB') 
      { accTypeCURRLIAB++ 
       accTypeCURRLIABProp.setPropertyValue("accTypeCURRLIABProp",String.valueOf(accTypeCURRENT)) 
       } 
      if (lineItem.AccountType == 'DEPRECIATN') 
      {   
       accTypeDEPRECIATN++ 
       accTypeDEPRECIATNProp.setPropertyValue("accTypeDEPRECIATNProp",String.valueOf(accTypeDEPRECIATN)) 
       } 
      if (lineItem.AccountType == 'DIRECTCOSTS') 
      {   
       accTypeDIRECTCOSTS++ 
       accTypeDEPRECIATNProp.setPropertyValue("accTypeDIRECTCOSTSProp",String.valueOf(accTypeDIRECTCOSTS)) 
      } 
      if (lineItem.AccountType == 'EQUITY') 
      {   
       accTypeEQUITY++ 
       accTypeEQUITYProp.setPropertyValue("accTypeEQUITYProp",String.valueOf(accTypeEQUITY)) 
       } 
      if (lineItem.AccountType == 'EXPENSE') 
      {   
       accTypeEXPENSE++ 
       accTypeEXPENSEProp.setPropertyValue("accTypeEXPENSEProp",String.valueOf(accTypeEXPENSE)) 
       } 
      if (lineItem.AccountType == 'FIXED') 
      {   
       accTypeFIXED++ 
       accTypeFIXEDProp.setPropertyValue("accTypeFIXEDProp",String.valueOf(accTypeFIXED)) 
      } 
      if (lineItem.AccountType == 'LIABILITY') 
      {   
       accTypeLIABILITY++ 
       accTypeLIABILITYProp.setPropertyValue("accTypeLIABILITYProp",String.valueOf(accTypeLIABILITY)) 
       } 
      if (lineItem.AccountType == 'OTHERINCOME') 
      {   
       accTypeOTHERINCOME++ 
       accTypeOTHERINCOMEProp.setPropertyValue("accTypeOTHERINCOMEProp",String.valueOf(accTypeOTHERINCOME)) 
       } 
      if (lineItem.AccountType == 'OVERHEADS') 
      {   
       accTypeOVERHEADS++ 
       accTypeOVERHEADSProp.setPropertyValue("accTypeOVERHEADSProp",String.valueOf(accTypeOVERHEADS)) 
      } 
      if (lineItem.AccountType == 'REVENUE') 
      {   
       accTypeREVENUE++ 
       accTypeREVENUEProp.setPropertyValue("accTypeREVENUEProp",String.valueOf(accTypeREVENUE)) 
       } 
      if (lineItem.AccountType == 'SALES') 
      { 
       accTypeSALES++ 
       accTypeSALESProp.setPropertyValue("accTypeSALESProp",String.valueOf(accTypeSALES)) 
       } 
      if (lineItem.AccountType == 'TERMLIAB') 
      {   
       accTypeTERMLIAB++ 
       accTypeTERMLIABProp.setPropertyValue("accTypeTERMLIABProp",String.valueOf(accTypeTERMLIAB)) 
       } 


     } 


     testRunner.gotoStepByName("GET Journal using Offset") 
     } 

Antwort

2

Eine Verbesserung könnte zu tun:

def testRunnerMap = testRunner.testCase.getTestStepByName("Properties").with { 
    // Add all properties you want to get from the testRuner to this array 
    [ 'journalCount', 'offset', 'accTypeBankProp', 'accTypeCURRENTProp' ].collectEntries { prop -> 
    [ "$prop":getPropertyValue(prop) ] 
    } 
} 
+0

Dank Tim - Ich werde diese ein Schuss. –

Verwandte Themen