关于robotframework做自动化是否需要校验数据库,业界一直都有争论,大多数人会选择校验数据库,而也有部分人认为无论是做UI测试还是接口测试,都应以用户的角度来测试,不能采用手工测试的思路作自动化测试。我也请教过自动化的前辈虫师,他给我的回复如下:
我个人而言,在思想上支持后者,但在实际工作中,还是会去校验数据库,心里踏实些。以下是以连接mysql数据库为例讲解:
一.安装DatabaseLibrary 、PyMysql
RF连接数据库,需要安装第三方库databaselibrary ,下载地址:
https://pypi.org/project/robotframework-databaselibrary/#files
以及pymysql,下载地址:
https://pypi.org/project/PyMySQL/#files
二.导入DatabaseLibrary
点击library,输入DatabaseLibrary ,点击OK即可
导入后,如果显示为黑色,表示导入成功;为红色,表示导入失败
三.连接数据库
使用Connect To Database Using Custom Params连接mysql,如下:
第一个参数—连接的数据库,mysql使用pymysql
第二个参数—连接数据库的相关参数,用户名密码等
四.查询数据库
使用query查询数据库,如下:
query后参数是你要执行的sql语句,这里我把查询结果赋值给变量${result_model}
五.校验查询返回值
校验的方法很多,我认为逐层校验比较好,先校验轮廓最粗的粒度,如果连这一层都失败,后面就没有校验的必要了。
should contain是校验是否A包含B或A是否包含B/C/D… 用这个关键字可以校验sql返回数据是否包含预期值。
上面的校验粒度比较粗,我们在测试的时候一定要细化粒度,可以取关键的某些字段来校验,如下是测试一个接口任务,因为任务运行是需要时间的,所以用到了FOR循环和Run KeyWord If判断,达不到预期条件就等待10秒,重复循环30次,循环结束还未达到就应该断言FAIL;如果达到预期条件,应该给出打印tag。最后要记得断开连接,使用DISCONNECT FROM DATABASE