【问题标题】:Parameterize a JDBC SQL Query in SOAP UI from a Custom Property从自定义属性参数化 SOAP UI 中的 JDBC SQL 查询
【发布时间】:2017-08-01 12:49:36
【问题描述】:

要继续进行数据库验证,我需要使用 SoapUI 将数据库中的记录与在先前 REST 响应中动态生成的数据进行比较。

我已经使用Property Transfer 步骤捕获了属性值,并将所需值成功存储在测试用例中的自定义属性中,即使用属性扩展,例如${TestCase#customerId}

我的意图是在 JDBC Request 测试步骤中使用存储在自定义属性中的特定值来查询我期望的结果。

我用参数起草的查询如下:

Select * 
From ABC.SEC_CUST
Where ABC.SEC_CUST.CUSTOMER_ID =  ${TestCase#customerId} 

执行后收到的响应如下。

获取响应时出错; java.sql.SQLSyntaxErrorException : ORA-00911: 无效字符。

但是,当我在没有参数化值的情况下运行查询时,它会完美执行。在哪里,我倾向于得出结论,因为我在查询中提到参数的方式存在语法问题。

但是,我无法找到在 SoapUI 的查询中提及参数的正确方法。

任何有 SoapUI 经验的人都可以帮助我吗?

【问题讨论】:

  • 请检查解决方案,看看是否能解决问题。
  • hirosht,你有机会试试答案吗?
  • @Rao,是的,您的解决方案完美运行!

标签: sql jdbc soapui


【解决方案1】:

这不起作用,因为使用了只有SoapUI 知道的属性扩展,但SQL query 不知道。

为了让它同样工作,您需要在顶部为 sql 查询中使用的所有参数定义变量 .

这里是解释如何使用相同的屏幕截图:

【讨论】:

  • 旧答案,我知道。但仍然 - 如何将其作为数字?当我只是从测试用例的属性中获取它时使用 PostgreSQL,它在查询中说它的 varchar 而它只是一个数字。
【解决方案2】:

你忘记了一个“#”

Select * 
From ABC.SEC_CUST
Where ABC.SEC_CUST.CUSTOMER_ID =  ${#TestCase#customerId} 

【讨论】:

  • 另外,如果 customer_id 不是数据库中的数值(设计不佳),则必须添加简单的引号: where ABC.SEC_CUST.CUSTOMER_ID = '${#TestCase#customerId}'
【解决方案3】:

试试这个。

Select * From ABC.SEC_CUST
Where ABC.SEC_CUST.CUSTOMER_ID = :customerId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多