1. 假设现在要写一个业务流程脚本:注册一个新用户,填入手机号后,输入响应验证码,并提交注册。
Katalon自带的Data files显然不满足,因为我们要实时查询不同where条件的返回值。
2. 我们可以直接用groovy语句写一个取值方法。例如:
import groovy.sql.Sql
def getYZM(def mobile){
//连接数据库
def sql = Sql.newInstance("jdbc:mysql://www.xxxx.com:3306/dbname", "username", "123456", "com.mysql.jdbc.Driver")
//拼接sql 这里业务是通过mobile去查询并返回验证码。
def sql_code = "select left(substring_index(content,'验证码为',-1),6) as 'YZM' from sms_send where phone = '" + mobile + "' and content like '%验证码%' order by id desc limit 0,1;"
//取值(firstRow()取第一行值)
def row = sql.firstRow(sql_code)
//返回YZM列内容
return "${row.YZM}"
}
这个演示的只是取一个最新值的情况,所以我order by 并limit 0,1了。并用了firstRow()去取值。
用firstRow()用起来比较方便,直接${对象.列名}就可以取值。eachRow()还不太熟悉,是多行数据。好像需要遍历才能使用。
3. 解释一下这么写sql的原因
表中验证码字段包含在content列,模版是"xxxxxxx,验证码为CY2135。xxxxxxx"
substring_index(content,'验证码为',-1) 的意思在content中找到"验证码为"这段内容的下标
left(n,n)是指,左起,截取从第几个下标到第几个下标的内容。
两者结合提取了验证码"CY2135"。