在自动化测试用例中可以加入对数据库的操作,常用于以下场景:
- 测试前对数据库插入测试数据。
- 清除脏数据。
- 查询 API 操作是否对数据库生效。
…
如需在自动化测试中加入数据库操作,需要进行以下2步:
- 在公共资源管理中添加数据库连接信息
- 在测试用例中添加数据库操作步骤
添加数据库连接信息
进入公共资源管理-数据库连接,添加一个数据库连接,在弹窗中可以选择需要连接的数据库类型以及填写数据库信息即可。
注意,为了安全起见,请勿在数据库连接中填写任何生产环境的数据库信息,并且建议单独为测试用的数据库连接创建一个仅拥有测试所需权限的数据库账号。防止因为误操作等原因导致业务数据丢失。
在测试用例中添加数据库操作步骤
进入自动化测试用例详情页面,点击添加测试步骤下拉菜单,选择 新建数据库操作 :
选择数据库连接
在数据库步骤编辑页面,输入步骤的名称,选择之前已经创建好的数据库连接:
填写SQL语句
在SQL语句输入框填写需要执行的SQL语句,可以填写多条SQL语句,每条语句使用分号“;”进行分隔。
您可以在SQL语句中使用 ${参数名} 可以作为变量,系统会自动识别变量并生成参数的映射表显示在SQL语句输入框的下方,您可以在这进行参数值的填写或者绑定。
鼠标放置在参数值的输入框上时,会显示绑定参数绑定按钮,您可以点击绑定按钮为该参数绑定其他测试步骤的参数值,实现动态传参的效果:
填写参数传递信息
数据库的返回结果可以传递给后续测试步骤中进行使用。
为了传递数据库的返回结果,您需要进行以下几步操作:
- 定义一些变量名,给后续测试步骤进行绑定。
- 编写Javascript代码解析数据库的返回结果,并将需要传递的数据分别赋值给第一步中定义的变量。
- 在后续步骤中使用参数绑定功能,选择数据库步骤中定义好的变量。
在预期返回信息的表单中定义一些变量名,此时系统会自动在下方代码框中生成变量的定义语句。
比如现在希望从数据库执行结果中获取user_id,则定义一个user_id的变量名:
注意,系统会自动在用户定义的参数名前添加 $dbparam 的前缀,方便系统识别这是一个自定义的变量。请不要在代码中删掉该前缀。
编写Javascript代码解析数据库的返回结果,并将user_id的数据赋值给第一步定义的user_id变量。
假设现在搜索user_name = percy得到一条数据库记录,我们需要取其中user_id并传递给后续测试步骤使用。
系统会将数据库执行的返回结果储存在变量 db_resLISTt 中 ,db_resLISTt 的数据结构如下图:
因此我们为user_id 参数添加赋值语句即可:$db_param_user_id = db_resLISTt[“query”][0][“resLISTt”][0][“user_id”];
填写数据库操作结果的校验规则
您可以设置数据库操作结果的判断规则,系统会根据规则对数据库操作结果进行判断。
校验全部语句执行成功
系统会自动根据数据库的返回信息判断所有SQL语句是否执行成功,如果执行成功则认为该数据库操作步骤测试通过。
如果在SQL语句输入框中有多条SQL语句,需要所有SQL语句都执行成功才算是测试通过。
自定义校验规则
您可以编写Javascript代码对数据库执行的结果进行判断。
系统会将数据库执行的返回结果储存在变量 db_resLISTt 中db_resLISTt的数据结构如下图:
假设现在搜索user_name = percy得到一条数据库记录,我们需要取其中user_id判断是否等于1。
在自定义校验规则中可以使用以下的示例代码:
//如果数据库语句整体执行成功
if(db_resLISTt["status"]=="success")
{
//取出第一条语句执行的返回结果的第一条记录中的user_id
$user_id = db_resLISTt["query"][0]["resLISTt"][0]["user_id"];
//判断user_id是否为1
if($user_id!=1)
{
//如果判断user_id不为1,输出执行失败
eo.stop("测试失败");
}
else
{
//如果不返回任何信息或者使用eo.stop()终止程序,则代表校验成功
}
}
else
{
//如果数据库语句整体执行失败,输出自定义语句
eo.stop("数据库语句执行失败");
}