soapUI:如何将列表设置为属性

时间:2014-12-23 07:35:43

标签: groovy soapui

我想使用Groovy在soapUI中执行以下操作:

  1. 从数据库中选择随机值和对应的数据
  2. 从webservice获取回复
  3. 将我的数据库数据与来自webservice的响应进行比较
  4. 为实现这一目标,我确定了以下步骤:

    1. 为测试套件创建属性对象
    2. Groovy脚本,用于从数据库中获取随机和对应的值
    3. 转换以将随机值放入请求
    4. Webservice致电以获得回复
    5. Groovy脚本,用于比较我的数据库中的值和webservice的响应
    6. 我已经为其他测试执行了相同的步骤,方法是将数据库中的值放入步骤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

1 个答案:

答案 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
}