我想使用Groovy在soapUI中执行以下操作:
为实现这一目标,我确定了以下步骤:
我已经为其他测试执行了相同的步骤,方法是将数据库中的值放入步骤2中的属性对象,然后在步骤5中从那里读取它们。但到目前为止,值始终是正常的String
或{ {1}}。在我当前测试用例的响应中,我得到了一个列表。所以我创建了一个数组并在步骤2中用bean对象填充了我想要的数据。在步骤5中,我解析了我的XML-String并将数据转换为Object-Array。所以我可以比较它们的所有属性。
我用一个单一的脚本编写了整个测试用例,然后在groovy控制台上进行了测试。当我开始将它转换为soapUI并使用该属性来运输" transport"从第2步到第5步的数据我的问题出现了,因为看起来我不能将Arraylist放到属性中(参见下面的错误消息)。
现在我很困惑,这是不可能的,因为我可以轻松地将SQL实例放在属性中:
int
所以我如何传输我的数组,填充对象,从第2步到第5步,将它与我的webservice响应进行比较。我 DON' T 想要将两者都转换为字符串并比较字符串是否相等,但我想手动比较我的bean类的每个属性。
Bean类:
def contextSqlInstanz = Sql.newInstance(urlH2, userH2, passwordH2, driverH2)
context.setProperty( "contextSqlInstanz", contextSqlInstanz )
sql = context.getProperty("contextSqlInstanz");
读取我的本地数据库,生成bean并将它们放入列表
class myBean {
String value1;
String value2;
...
}
尝试将列表放入属性
function getdata() {
def liste = []
// sql-statements
sql.eachRow(...) {
def myBean = new myBean();
myBean.value1 = it.value1.toString();
myBean.value2 = it.value2.toString();
...
liste.add(Schluesselwert)
}
return liste
}
结果:
groovy.lang.MissingMethodException:没有方法签名:com.eviware.soapui.impl.wsdl.teststeps.WsdlPropertiesTestStep.setPropertyValue()适用于参数类型:(java.lang.String,java.util.ArrayList)值:[sollListe,[value1 @ 15d4334,value2 @ 1e739c8,...]]可能的解决方案:setPropertyValue(java.lang.String,java.lang.String),getPropertyValue(java.lang.String)error at line:91
答案 0 :(得分:2)
因为我没有找到另一种方式,所以我把它们作为自己的财产放入电影中,这是一种丑陋的方式
在第2步中设置道具:
def convertVectorToProps(vector) {
def size = vector.size();
def props = testRunner.testCase.getTestStepByName("P_testcase")
props.setPropertyValue("sollSize", size.toString())
for(int i=0; i < size; i++) {
props.setPropertyValue("myBean.value1" + i, vector.value1[i]);
props.setPropertyValue("myBean.value2" + i, vector.value2[i]);
...
}
}
在步骤5中阅读道具并构建新的向量:
def convertPropsToVector() {
def props = testRunner.testCase.getTestStepByName("P_testcase")
def sollSize = props.getPropertyValue("sollSize").toInteger()
SollListe = [];
for(int i=0; i < sollSize; i++) {
def myBean = new myBean();
myBean.value1 = props.getPropertyValue("myBean.value1" + i);
myBean.value2 = props.getPropertyValue("myBean.value2" + i);
SollListe << myBean
}
return SollListe
}