Groovy和变量类型的问题

Groovy和变量类型的问题,groovy,soapui,Groovy,Soapui,我正试图获得一段使用SOAPUI的Groovy代码,但遇到了一个问题 这段代码要做的是在属性文件中读取,然后在SOAPUI中设置一些属性。我将它放在SOAPUI测试用例中的Groovy脚本测试步骤中,每次运行它时,我都希望它从不同的文件名读取,因此在测试用例中有两个附加属性,cur_request_number和max_request_number 假设此代码每次递增cur_request_编号,并检查其是否达到max_request_编号,如果达到,则将cur_request_编号设置回1。它

我正试图获得一段使用SOAPUI的Groovy代码,但遇到了一个问题

这段代码要做的是在属性文件中读取,然后在SOAPUI中设置一些属性。我将它放在SOAPUI测试用例中的Groovy脚本测试步骤中,每次运行它时,我都希望它从不同的文件名读取,因此在测试用例中有两个附加属性,cur_request_number和max_request_number

假设此代码每次递增cur_request_编号,并检查其是否达到max_request_编号,如果达到,则将cur_request_编号设置回1。它可以正常工作,但前提是最大请求数量为9或以下。如果是10或更高,当它达到9或10时,cur_request_number++似乎将其递增为字符串值,例如分号

换言之,假设它在每个周期上阅读:

testprop1.txt
testprop2.txt
.
.
我在下面发布的代码实际上还没有读取textpropX.txt文件,只是打印它将读取的文件名,因为我还在调试

我是Groovy的新手,所以我有点被卡住了。我尝试过添加到Integer,但后来遇到了不同的问题

def cur_request_number = testRunner.testCase.getPropertyValue("cur_request_number");
def max_request_number = testRunner.testCase.getPropertyValue("max_request_number");
log.info "INITIAL cur_request_number=[" + cur_request_number + "]"
log.info "INITIAL max_request_number=[" + max_request_number + "]"

cur_request_number++;

log.info "BUMPED cur_request_number=[" + cur_request_number + "]"

if (cur_request_number == max_request_number) {
    log.info "In the IF about to reset cur_request_number to 1";
    cur_request_number = "1";
}

// set the cur_request_number property (either the incremented one, or "1")
testRunner.testCase.setPropertyValue("cur_request_number", cur_request_number);

cur_request_filename = "E:/SOAPUI-PROPS/testprops" + cur_request_number.toString() +".txt";
log.info "READING FROM Request file [" + cur_request_filename + "]"

props = new java.util.Properties ()
file = new File("E:/SOAPUI-PROPS/testprops.txt")
if(!file.exists()) {
    log.info "No file found at E:/SOAPUI-PROPS/testprops.txt"
}
else {
    log.info "max_request_number=[" + max_request_number + "]"

    log.info "In the ELSE, cur_request_number=[" + cur_request_number + "]"
    //testRunner.testCase.setPropertyValue("cur_request_number", cur_request_number);
    log.info "Found E:/SOAPUI-PROPS/testprops.txt"
    fis = new FileInputStream (file)
    props.load (fis)
    requestid = props.getProperty ( "requestid" )
    log.info "requestid = [" + requestid + "]"
    dnstring = props.getProperty ( "dnstring" )
    log.info "dnstring= [" + dnstring + "]"
    testRunner.testCase.setPropertyValue("requestid", requestid);
    context.requestid = requestid;
    log.info "Finished setting 'requestid' property"
    testRunner.testCase.setPropertyValue("dnstring", dnstring);
    context.dnstring = dnstring;
    log.info "Finished setting 'dnstring' property"
} 
如果有人能告诉我我做错了什么,我会非常感激

谢谢, 吉姆

试试换衣服

def cur_request_number = testRunner.testCase.getPropertyValue("cur_request_number");
def max_request_number = testRunner.testCase.getPropertyValue("max_request_number");

我怀疑它是从某个属性文件中读取数字作为字符串

,getPropertyValue返回一个字符串

尝试更改

def cur_request_number = testRunner.testCase.getPropertyValue("cur_request_number");
def max_request_number = testRunner.testCase.getPropertyValue("max_request_number");

我怀疑它是从某个属性文件中读取数字作为字符串


,getPropertyValue返回一个字符串

谢谢。我试试看。与此同时,我终于让它工作了,尽管是另一种,可能真的更丑陋的方式。我要做的是创建基本上对应的整数变量,例如def cur_request_number_INT,并使用cur_request_number_INT=cur_request_number.toInteger将其设置为整数值,对于max_request_number和max_request_number_INT也是如此。我尝试了你的建议,1它有效,2它肯定会清理我的代码。我仍然需要使用一些toString转换,但现在看起来肯定好多了!!吉姆坦克斯。我试试看。与此同时,我终于让它工作了,尽管是另一种,可能真的更丑陋的方式。我要做的是创建基本上对应的整数变量,例如def cur_request_number_INT,并使用cur_request_number_INT=cur_request_number.toInteger将其设置为整数值,对于max_request_number和max_request_number_INT也是如此。我尝试了你的建议,1它有效,2它肯定会清理我的代码。我仍然需要使用一些toString转换,但现在看起来肯定好多了!!吉姆