我正在尝试获取一段Groovy代码(使用SOAPUI),但是遇到了问题。
这段代码假定要执行的操作是在属性文件中读取的,然后在SOAPUI中设置一些属性。我将其放在SOAPUI测试用例的Groovy脚本测试步骤中,每次运行时,我都希望它从不同的文件名读取,因此在测试用例中我有两个附加属性,即cur_request_number和max_request_number。
假定此代码每次都递增cur_request_number,并检查其是否达到max_request_number,如果是,则将cur_request_number设置回1。这是可行的,但前提是max_request_number为9或以下。如果等于或大于10,则达到9或10时,cur_request_number ++似乎会将其递增为字符串值,例如,分号。
换句话说,假设(在每个周期)阅读:
testprop1.txt
testprop2.txt
.
.
Run Code Online (Sandbox Code Playgroud)
我在下面发布的代码实际上还没有读取textpropX.txt文件,但是只是打印了它将读取的文件名,因为我仍在调试中。
我对Groovy真的很陌生,所以有点受限制。我曾尝试添加toInteger(),但后来遇到了其他问题。
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"
}
Run Code Online (Sandbox Code Playgroud)
如果有人能告诉我我在做什么错,我将非常感激。
谢谢,吉姆
尝试改变
def cur_request_number = testRunner.testCase.getPropertyValue("cur_request_number");
def max_request_number = testRunner.testCase.getPropertyValue("max_request_number");
Run Code Online (Sandbox Code Playgroud)
至
int cur_request_number = Integer.parseInt( testRunner.testCase.getPropertyValue("cur_request_number") )
int max_request_number = Integer.parseInt( testRunner.testCase.getPropertyValue("max_request_number") )
Run Code Online (Sandbox Code Playgroud)
我怀疑它是在某个位置从属性文件中读取数字作为字符串
如您所见,getPropertyValue返回一个String