热衷于听取有关如何做到这一点的反馈A)不那么难看B)坚持至少一些基本的编码原则!我正在使用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")
}
答案 0 :(得分:2)
可以做一个改进:
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 ) ]
}
}