前言
日常接口测试和自动化测试时经常需要用到连接数据库,SoapUI JDBC 可以支持 JDBC 和 Scrip 两种方式连接,这里先纪录下JDBC方式连接
一、数据库连接
1.添加一个JDBC request
2.添加完毕后,看到JDBC的内容页面:
需要我们自己去添加驱动以及连接字符串
注意:驱动需要我们自己去下载,mysql-connector-java-5.1.7-bin.jar,下载好后,把它直接放在 soapui的 lib文件夹下面。
看到上面的连接方式,我这里就只说了mysql的连接方式。
Driver:com.mysql.jdbc.Driver ---->这里是mysql的驱动引用方式。
Connection String:jdbc:mysql://localhost:3306/vega?user=root&password=123456 ---->这里是连接数据库字符串的拼接方式。下面进行特别说明:
连接字符串的组成方式如下:
jdbc:mysql://ip[数据库所在的服务器IP地址]:port[端口号]/database[数据库名称]?user=[这里填写登录数据库用户名]&password=[密码]
3.点击绿色的:test connection按钮,查看是否连接成功,如果成功,就会看到下面的提示框:
4.然后可以在下面的输入框中,输入对应的sql语句,就可以查看到查询成功了!
JDBC Request 也可以添加断言,添加方式与接口请求方式一致,这里添加一个Contains Assertion 验证返回中包含了"EMAIL"字段
这个就算是连接并运用成功了,如果说是复杂的sql语句,可能需要大家自己去研究下存储过程,下面有一个可以勾选的存储过程的选项
二、参数化
对于不变参数的查询,上面的步骤就够用了,但是接口自动化过程中会有参数变化的情况,这时就需要参数化从上游接受数据,再将处理后的数据传递给下游
1.上游数据参数化
这里我模拟从project 中接收email参数,首先在project 层添加email参数
然后修改 JDBC Request ,点击左上角加号,添加变量"myEmail"值为project中的email--${#Project#email};
再将SQL Query 中where条件修改email=:myEmail,请注意,这里是冒号
select * from t_user where email=:myEmail;
修改后,点击左上角执行图标,观察右侧查询结果可以出来,说明参数化成功
2.查询结果返回到下游
查询数据库的结果是role_id是1,后续接口需要跟进1去判断用户类型,那么怎么将这个结果返回出去呢,我使用Property Transfer,选择接口右键添加
使用Xpath,//T_USER.ROLE_ID提取变量 ROLE_ID
在project 中添加roleId变量,保存提取出来的变量值,这样其他地方就可以继续用roleId啦