购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 DatabaseLibrary库的使用

在自动化过程中,我们经常需要连接不同的数据库,并且对数据库进行很多不同的操作。Robot Framework提供了DatabaseLibrary库来操作数据库。我们可以按照官网中的说明来安装DatabaseLibrary库。在浏览器中访问http://franz-see.github.io/Robotframework-Database-Library/页面,即可看到该库的相关安装说明和API介绍,如图2-1-1所示。

图 2-1-1

可以通过在命令行中执行pip install -U robotframework-databaselibrary来进行安装。安装完成后,在使用DatabaseLibrary库时,需要预先在测试套件中导入该库,如图2-1-2所示。这里以MySQL数据库为例,讲述DatabaseLibrary库的使用。

图 2-1-2

要连接到MySQL,除了要导入DatabaseLibrary库外,还需要安装pure-Python MySQL client library,可以通过访问网址:https://github.com/PyMySQL/PyMySQL下载该库并且进行安装,或者直接在cmd命令行中输入pip install PyMySQL来进行安装,如图2-1-3所示。

图 2-1-3

2.1.1 如何连接数据库

(1)可以通过DatabaseLibrary库中的Connect To Database关键字来连接一个MySQL数据库。此处以连接本机MySQL库为例,如图2-1-4所示。

图 2-1-4

执行结果如图2-1-5所示。

图 2-1-5

(2)还可以通过Connect To Database Using Custom Params关键字来连接MySQL数据库,如图2-1-6所示。

图 2-1-6

执行结果如图2-1-7所示。

图 2-1-7

2.1.2 如何断开数据库

可以通过关键字Disconnect From Database断开数据库连接,我们在操作数据库时一定不要忘记在操作完成后断开数据库的连接,如图2-1-8所示。

图 2-1-8

执行结果如图2-1-9所示。

图 2-1-9

2.1.3 如何对数据库的表进行查询

通过Query关键字可以对数据库中的表进行查询。此处以查询MySQL数据库中某张表的数据为例,我们在world数据库中执行“SELECT * FROM city LIMIT 5;”这条SQL语句。在SQL窗口中查询出来的结果如图2-1-10所示。

图 2-1-10

然后我们使用Query关键字来进行查询,如图2-1-11所示。

图 2-1-11

执行结果如图2-1-12所示。

图 2-1-12

2.1.4 如何插入和删除数据

可以通过Execute Sql String关键字来执行数据库的插入操作和删除操作。

(1)首先我们来看一下如何向数据库中插入数据。此处以向表city中插入一条记录为例,通过Execute Sql String关键字来执行INSERT INTO city(NAME,countrycode,district,population) VALUES('beijing' ,'ZH','China',217100) ,如图2-1-13所示。

图 2-1-13

执行结果如图2-1-14所示。

图 2-1-14

在SQL窗口查询刚刚执行的insert语句是否执行成功。我们可以看到已经成功插入了数据,如图2-1-15所示。

图 2-1-15

(2)然后我们看一下怎么删除表中的数据。我们将上面插入的“'beijing' ,'ZH','China', 217100”这条数据从数据库中删除,如图2-1-16所示。

图 2-1-16

执行结果如图2-1-17所示。

图 2-1-17

在SQL窗口查询一下有没有将数据成功删除。从查询的结果看,数据已经成功地被删除,如图2-1-18所示。

图 2-1-18

2.1.5 如何执行数据库脚本文件

在做自动化测试时,我们经常需要构造数据或者对库中的数据进行初始化,但是如果我们每次都是将要执行的数据库脚本按条写在用例中,那么将非常不好维护,因此我们需要直接执行数据库脚本文件。在DatabaseLibrary库中,可以通过Execute Sql Script关键字来执行数据库脚本文件。

此处以执行本地磁盘中的script.sql为例。在script.sql脚本中放入需要执行的语句,如图2-1-19所示。

图 2-1-19

完整示例如图2-1-20所示。

图 2-1-20

执行结果如图2-1-21所示。

图 2-1-21

执行成功后,对数据库进行查询,会发现脚本已经执行成功、数据已经成功插入,如图2-1-22所示。

图 2-1-22

2.1.6 DatabaseLibrary库的其他操作关键字

表2-1-1中描述了DatabaseLibrary库中其他关键字的使用方法。

表2-1-1 DatabaseLibrary库其他关键字的使用方法 05MCUohzOOxehukDWkMzcrNo6iihijIlSl1CVxac9MRgVwqCsY/jkjx6wOLxsi3F



2.2 MongoDBLibrary库的使用

MongoDB是非常常用的一个非关系型数据库。Robot Framework提供了对MongoDB数据库测试操作的支持。我们可以通过在浏览器中访问GitHub的网站地址https://github.com/iPlant CollaborativeOpenSource/Robotframework-MongoDB-Library,查看该库的相关安装说明和API介绍,如图2-2-1所示。

图 2-2-1

安装完成后,在使用MongoDBLibrary库时,需要预先在测试套件中导入该库,如图2-2-2所示。

图 2-2-2

2.2.1 MongoDB数据库的连接和断开

在MongoDBLibrary中通过Connect To MongoDB关键字来连接到MongoDB数据库,该关键字接收[ dbHost=localhost | dbPort=27017 | dbMaxPoolSize=10 | dbNetworkTimeout=None | dbDocClass= | dbTZAware=False ]六个参数。其中,dbHost参数指的是MongoDB数据库的IP地址,dbPort参数指的是MongoDB数据库的端口号,不输入时默认为27017;dbMaxPoolSize参数指的是数据库连接的最大线程池大小,不输入时默认大小为10。

【示例1】我们连接到本地电脑上一个已经启动好的MongoDB数据库上,这里预先启动了一个3.2版本的MongoDB数据库,如图2-2-3所示。

图 2-2-3

在RIDE中,使用Connect To MongoDB来连接刚刚启动好的数据库,如图2-2-4所示。

图 2-2-4

运行结果如图2-2-5所示。

图 2-2-5

执行完成后,查看一下MongoDB服务端的日志。从如图2-2-6所示的MongoDB服务端的日志可以看到,已经成功和MongoDB数据库建立了连接。

图 2-2-6

在MongoDBLibrary中通过Disconnect From Mongodb关键字来断开已经建立的MongoDB数据库连接。

【示例2】通过Disconnect From Mongodb关键字断开MongoDB的数据库连接,如图2-2-7所示。

图 2-2-7

运行结果如图2-2-8所示。

图 2-2-8

从MongoDB的日志可以看到,在执行Disconnect From Mongodb关键字操作后,数据库服务端日志中已经显示数据库连接终止。

[conn3] end connection 127.0.0.1:2945 (0 connections now open)

2.2.2 Get Mongodb Databases和Get Mongodb Collections

在MongoDBLibrary中通过Get Mongodb Databases关键字来获取当前MongoDB下所有在用的数据库。

【示例1】我们通过Get Mongodb Databases关键字来获取上面启动的MongoDB下的所有数据库,如图2-2-9所示。

图 2-2-9

运行结果如图2-2-10所示。

图 2-2-10

从运行结果可以看到只获取到了一个名叫local的数据库。我们通过客户端连接到MongoDB服务端,然后执行show databases命令,可以看到得到的结果和我们通过Get Mongodb Databases关键字来获取到的数据库信息是一致的,如图2-2-11所示。

图 2-2-11

通过Get Mongodb Collections关键字可以获取到指定MongoDB数据库下的所有Collection,该关键字接收[ dbName ]一个参数。

【示例2】我们通过Get Mongodb Collections关键字来获取到local库下的所有Collection,如图2-2-12所示。

图 2-2-12

运行结果如图2-2-13所示。

图 2-2-13

从运行结果可以看到,获取到的local库下的Collection名叫startup_log,然后我们通过客户端连接到服务端,通过客户端show collections命令来获取Collection。我们可以看到获取到的Collection是完全一致的,如图2-2-14所示。

图 2-2-14

2.2.3 Save Mongodb Records

Save MongoDB Records关键字用来向指定的Collection中保存插入的记录,接收[ dbName| dbCollName | recordJSON ]三个参数。

【示例】我们向startup_log这个Collection中插入一条记录,如图2-2-15所示。

图 2-2-15

运行结果如图2-2-16所示。

图 2-2-16

执行完成后,我们通过MongoDB客户端连接到服务端,执行db.startup_log.find()命令来查看startup_log这个Collection下的记录。可以看到{"book":"RobotFramework"}这条数据记录已经成功插入MongoDB中,如图2-2-17所示。

图 2-2-17

2.2.4 Retrieve All Mongodb Records

Retrieve All Mongodb Records关键字用来获取指定Collection下的所有数据记录,接收[ dbName | dbCollName | returnDocuments=False ]三个参数。

【示例】我们通过Retrieve All Mongodb Records关键字来获取startup_log下的数据记录,如图2-2-18所示。

图 2-2-18

运行结果如图2-2-19所示。

图 2-2-19

如图2-2-20所示,运行结果与我们在客户端通过db.startup_log.find()命令行获取到的结果是一致的。

图 2-2-20

2.2.5 Update Many Mongodb Records

Update Many Mongodb Records关键字用来更新Collection中的数据记录,接收[ dbName | dbCollName | queryJSON | updateJSON | upsert=False ]五个参数。

【示例】我们更新上面示例中插入的{"book":"RobotFramework"}记录为{"book":"robotFramework"},即将RobotFramework变为robotFramework,如图2-2-21所示。

图 2-2-21

运行结果如图2-2-22所示。

图 2-2-22

更新完成后,通过客户端的db.startup_log.find()命令来进行重新查询,如图2-2-23所示。从查询的结果可以看到指定的记录已经更新完成了。

图 2-2-23

2.2.6 Remove Mongodb Records

Remove Mongodb Records关键字用来删除指定Collection中的数据记录,接收[ dbName | dbCollName | recordJSON ]三个参数。

【示例】我们重新创建一个capped属性为false的Collection,因为之前的Collection的capped属性为true,会导致数据记录无法被删除。在客户端创建一个Collection的命令为db.createCollection("RobotFramework",{capped : false}),如图2-2-24所示,新的名叫RobotFramework的Collection创建完成。

图 2-2-24

创建完成后,通过客户端的db.Robot Framework.find()命令进行查询,如图2-2-25所示。然后我们使用Remove Mongodb Records关键字来删除{"book":"robotFramework"}这条记录,如图2-2-26所示。

图 2-2-25

图 2-2-26

运行结果如图2-2-27所示。

图 2-2-27

执行完成后,在客户端执行db.RobotFramework.find()进行查询,如图2-2-28所示,从查询的结果可以看到{"book":"robotFramework"}这条记录已经被删除。

图 2-2-28

2.2.7 MongoDBLibrary库的其他关键字

表2-2-1中列出了MongoDBLibrary库中其他关键字的使用示例。

表2-2-1 MongoDBLibrary库中其他关键字 05MCUohzOOxehukDWkMzcrNo6iihijIlSl1CVxac9MRgVwqCsY/jkjx6wOLxsi3F



第3章
HTTP接口自动化测试

HTTP接口自动化测试是常见的一种自动化测试需求和需要。在Robot Framework中,RequestsLibrary、HttpLibrary.HTTP、REST等库都可以用来做HTTP接口方面的自动化测试。 05MCUohzOOxehukDWkMzcrNo6iihijIlSl1CVxac9MRgVwqCsY/jkjx6wOLxsi3F

点击中间区域
呼出菜单
上一章
目录
下一章
×