首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Soup自定义参数定义

问Soup自定义参数定义
EN

Stack Overflow用户
提问于 2017-10-26 08:49:19
回答 1查看 187关注 0票数 1

我使用Soup 'JDBC请求‘选项来检查db结果。我通常使用参数作为

param = ${step name#request param}

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

即有一个请求参数,名为ID,值为1000,10001,10003,我创建一个JDBC参数为IDs =${ name#IDs},并将sql查询创建为select * from db where id in (:IDs),它只获得逗号分隔参数的第一条记录。因此,我想知道如何使用逗号划分的JDBC参数和sql select一起使用,因为我从上一步请求param获得了方便的ui参数,如:图像。

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-03 11:00:44

下面是使用多值in子句发送查询的方式。

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

Groovy脚本:遵循内联注释。

代码语言:javascript
复制
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测试步骤是打开的,只需关闭它并重新打开以查看更新的查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46949726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档