Groovy代码循环通过GET请求和计数节点

Groovy代码循环通过GET请求和计数节点,groovy,soapui,Groovy,Soapui,渴望听到关于如何让这变得不那么丑陋的反馈A)遵守至少一些基本的编码原则!我使用的是SOAPUI,所以对属性的任何引用都意味着在测试用例属性步骤中存储了一些内容 我想用字典,但不知从何说起。我只知道下面的if语句针对一些非常难看且容易出错的代码 所有建议,无论多么关键,都是受欢迎的。我渴望进步 import java.text.* import java.util.* def xmlSlurper = new groovy.util.XmlSlurper()

渴望听到关于如何让这变得不那么丑陋的反馈A)遵守至少一些基本的编码原则!我使用的是SOAPUI,所以对属性的任何引用都意味着在测试用例属性步骤中存储了一些内容

我想用字典,但不知从何说起。我只知道下面的if语句针对一些非常难看且容易出错的代码

所有建议,无论多么关键,都是受欢迎的。我渴望进步

    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")
       }
导入java.text*
导入java.util*
def xmlSlurper=new groovy.util.xmlSlurper()
//获取日志数的上一个总数
def journalCountProp=testRunner.testCase.getTestStepByName(“属性”)
def journalCountTotal=journalCountProp.getPropertyValue(“journalCount”)
log.info“上次运行的上一个日志计数:”+journalCountTotal
def lastOffsetProp=testRunner.testCase.getTestStepByName(“属性”)
def lastOffsetHolder=lastOffsetProp.getPropertyValue(“偏移”)
log.info“上次运行的上一个偏移量:”+lastOffsetHolder
//获取给定时间线的响应
def response=xmlSlurper.parseText(context.expand('${GET Journal using Offset#response}');
def currentJournalCount=response.Journals.Journal.size()
log.info“此运行中的日记账数:”+currentJournalCount
//从上一个日记账获取日期(包括数组计数从0开始时的偏移量)
def lastDate=response.Journals.Journal[currentJournalCount-1].JournalDate
log.info“此响应的日期:”+lastDate
//将给定日期的日记账总额相加。
journalCountProp.setPropertyValue(“journalQueryDate”,String.valueOf(lastDate))
def countJournalAsInt
def offsetCountAsInt
def accTypeBank=context.expand('${Properties#accTypeBankProp}').toInteger()
//log.info“账户类型-银行:”+acktypebank
def accTypeBankProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeBankTotal=accTypeBankProp.getPropertyValue(“accTypeBankProp”)
def accTypeCURRENT=context.expand('${Properties#accTypeCURRENTProp}').toInteger()
//log.info“AccountType-Current:+accTypeCURRENT
def accTypeCURRENTProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeCURRENTTotal=accTypeCURRENTProp.getPropertyValue(“accTypeCURRENTProp”)
def accTypeCURRLIAB=context.expand(“${Properties#accTypeCURRLIABProp}”).toInteger()
//log.info“AccountType-CURRLIAB:+accTypeCURRLIAB
def accTypeCURRLIABProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeCURRLIABTotal=accTypeCURRLIABProp.getPropertyValue(“accTypeCURRLIABProp”)
def acctypedrent=context.expand(“${Properties#acctypecurliabprop}”).toInteger()
//log.info“AccountType-折旧N:+AcctypeDevalentN
def acctypedrenprep=testRunner.testCase.getTestStepByName(“属性”)
def acctypedrentotal=acctypedrennprop.getPropertyValue(“acctypedrennprop”)
def accTypeDIRECTCOSTS=context.expand(“${Properties#acctypecurliabprop}”).toInteger()
//log.info“AccountType-DIRECTCOSTS:+accTypeDIRECTCOSTS
def accTypeDIRECTCOSTSProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeDIRECTCOSTSTotal=accTypeDIRECTCOSTSProp.getPropertyValue(“accTypeDIRECTCOSTSProp”)
def accTypeEQUITY=context.expand('${Properties#accTypeEQUITYProp}').toInteger()
//log.info“AccountType-EQUITY:+accTypeEQUITY
def acctypequityprop=testRunner.testCase.getTestStepByName(“属性”)
def accTypeEQUITYTotal=accTypeEQUITYProp.getPropertyValue(“accTypeEQUITYProp”)
def accTypeEXPENSE=context.expand(“${Properties#accTypeEXPENSEProp}”).toInteger()
//log.info“AccountType-费用:”+accTypeEXPENSE
def accTypeEXPENSEProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeEXPENSETotal=accTypeEXPENSEProp.getPropertyValue(“accTypeCURRLIABProp”)
def accTypeFIXED=context.expand('${Properties#accTypeFIXEDProp}').toInteger()
//log.info“AccountType-修复:”+accTypeFIXED
def accTypeFIXEDProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeFIXEDTotal=accTypeFIXEDProp.getPropertyValue(“accTypeFIXEDProp”)
def accTypeLIABILITY=context.expand('${Properties#accTypeLIABILITYProp}').toInteger()
//log.info“AccountType-负债:”+AcctypeResponsibility
def accTypeLIABILITYProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeLIABILITYTotal=accTypeLIABILITYProp.getPropertyValue(“accTypeLIABILITYProp”)
def accTypeOTHERINCOME=context.expand('${Properties#accTypeOTHERINCOMEProp}').toInteger()
//log.info“账户类型-其他收入:”+ACCTYPE其他收入
def accTypeOTHERINCOMEProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeOTHERINCOMETotal=accTypeOTHERINCOMEProp.getPropertyValue(“accTypeOTHERINCOMEProp”)
def acctypethoreds=context.expand('${Properties#acctypethoredsprop}').toInteger()
//log.info“AccountType-管理费用:”+AcctypeOverdes
def ACCTYPE OverdeDSPROP=testRunner.testCase.getTestStepByName(“属性”)
def acctypetroveredtotal=acctypetroveredsprop.getPropertyValue(“acctypetroveredsprop”)
def accTypeREVENUE=context.expand(“${Properties#accTypeREVENUEProp}”).toInteger()
//log.info“AccountType-收入:”+accTypeREVENUE
def accTypeREVENUEProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeREVENUETotal=accTypeREVENUEProp.getPropertyValue(“accTypeREVENUEProp”)
def accTypeSALES=context.expand('${Properties#accTypeSALESProp}').toInteger()
//log.info“AccountType-销售:”+accTypeSALES
def accTypeSALESProp=testRunner.testCase.getTestStepByName(“属性”)
def accTypeSALESTotal=accTypeSALESProp.getPropertyValue(“accTypeSALESProp”)
def accTypeTERMLI
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 ) ]
  }
}