【问题标题】:Soup ui jdbc custom parameter definitionsoapui jdbc自定义参数定义
【发布时间】:2017-10-26 08:49:19
【问题描述】:

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

参数 = ${步骤名称#请求参数}

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

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

【问题讨论】:

  • 你能显示屏幕截图如何存储值吗?
  • id 是数字字段吗?还是 text / varchar 类型?
  • 我尝试添加照片,我觉得我的分数不够
  • 是的,id 是数字字段
  • 我添加了图像,我从其他步骤的请求参数中获取 jdbc 参数:逗号分隔数字字段的作业。

标签: jdbc groovy soapui


【解决方案1】:

您可以通过以下方式发送带有多个值的查询in 子句。

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

Groovy 脚本: 遵循嵌入式 cmets。

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 测试步骤已打开,只需将其关闭并重新打开以查看更新后的查询。

【讨论】:

  • 感谢您的回答。我没有在 groovy do far 中使用绑定。我搜索了一下
  • binding 是变量定义的,您可以在query 语句下方看到。顺便说一句,感谢这个问题,不得不寻找 API 文档(之前没有做过类似的事情)并想出了这个脚本,我知道它需要一段时间才能回答。
猜你喜欢
  • 1970-01-01
  • 2011-11-09
  • 2023-03-12
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 2021-03-04
相关资源
最近更新 更多