汤ui jdbc自定义参数定义

时间:2017-10-26 08:49:19

标签: jdbc groovy soapui

我使用Soup ui'JDBC Request'选项来检查db结果。我通常使用参数

  

param = $ {step name#request param}

并使用它 sql as select * from db where param = :param 这对于特定的参数非常有用。但是当我尝试使用逗号分割的参数时(例如1000,10001,10003),sql查询首先运行它,1000。

即具有请求参数,其名称为ID和值1000,10001,10003 我创建一个JDBC参数ID = $ {step name#IDs} 并以sql的身份创建sql查询 select * from db where id in (:IDs)它只获得逗号分隔参数的第一条记录。 因此我想知道如何使用逗号划分的JDBC参数和sql select in 我从上一步请求参数获取汤ui参数: image enter image description here

1 个答案:

答案 0 :(得分:1)

以下是使用多个值in子句发送查询的方法。

  • 添加测试用例级自定义属性,例如IDS并根据需要提供值(如问题中提到的用逗号分隔)
  • 在休息请求中,您也可以使用与${#TestCase#IDS}
  • 相同的内容
  • 在jdbc请求测试步骤中,将查询保持为空。没关系,来自groovy脚本query
  • 的覆盖
  • 在jdbc请求测试步骤之前添加一个groovy脚本测试步骤,并添加以下脚本,该脚本将使用多个值(动态根据需要)in子句设置计算查询。

Groovy脚本:按照内嵌评论进行操作。

import groovy.text.SimpleTemplateEngine

//Edit the jdbc test step name if required
def nextStep = 'Compare with db results'

//Edit query if required, but not ids variable below as that is used in binding
def query = 'select * from job where id in ( $ids )'
def binding = [ids: context.testCase.getPropertyValue('IDS')]
def step = context.testCase.testSteps[nextStep]
def template = new SimpleTemplateEngine().createTemplate(query).make(binding)

log.info "updated query : ${template.toString()}"

//Set the query to jdbc step
step.jdbcRequestTestStepConfig.query = template.toString()

运行测试用例时,groovy脚本步骤会将查询设置为jdbc请求。

注意:如果jdbc测试步骤已打开,请关闭它并重新打开以查看更新的查询。