RobotFramework自動化測試框架-MongoDBLibrary庫的使用


筆者接着 RobotFramework自動化測試框架-DatabaseLibrary庫的使用(對數據庫的操作)

繼續分享robotframework 對數據庫中的MongoDB的詳細操作。這是筆者第二篇關於robotframework 對數據庫的操作的分享介紹。

MongoDB是非常常用的一個非關系型數據庫,在RobotFramework中,也提供了對MongoDB數據庫測試操作的支持。我們可以通過在瀏覽器中訪問github的網站地址

https://github.com/iPlantCollaborativeOpenSource/Robotframework-MongoDB-Library 即可以看到該庫的相關安裝說明和API介紹,如下圖2-2-1所示。

 

 

圖2-2-1

作者的原創文章,轉載須注明出處。原創文章歸作者所有,歡迎轉載,但是保留版權。對於轉載了博主的原創文章,不標注出處的,作者將依法追究版權,請尊重作者的成果,轉載請注明鏈接:https://www.cnblogs.com/laoqing/p/11509042.html

RobotFramework自動化測試框架-MongoDBLibrary庫的使用

 

安裝完成后,在使用MongoDBLibrary庫時,需要在測試套件中,預先導入該庫,才可以在用例中使用MongoDBLibrary庫中的關鍵字,如下圖2-2-2所示。

 

 

圖2-2-2

2.1.1        MongoDB數據庫的連接和斷開

 

在MongoDB Libray中通過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

運行結果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase001

20180825 17:47:32.470 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase001

我們執行完成后,然后我看下MongoDB服務端的日志,從如下的MongoDB服務端的日志可以看到,已經成功和MongoDB數據庫建立了連接。

2018-08-25T17:45:30.134+0800 I CONTROL  [main] Hotfix KB2731284 or later update is not installed, will zero-out data files

2018-08-25T17:45:30.138+0800 I CONTROL  [initandlisten] MongoDB starting : pid=8964 port=27017 dbpath=D:\MongoDB\Server\3.2\data 64-bit host=yongqing-PC

2018-08-25T17:45:30.138+0800 I CONTROL  [initandlisten] targetMinOS: Windows Vista/Windows Server 2008

2018-08-25T17:45:30.139+0800 I CONTROL  [initandlisten] db version v3.2.4

2018-08-25T17:45:30.139+0800 I CONTROL  [initandlisten] git version: e2ee9ffcf9f5a94fad76802e28cc978718bb7a30

2018-08-25T17:45:30.140+0800 I CONTROL  [initandlisten] allocator: tcmalloc

2018-08-25T17:45:30.140+0800 I CONTROL  [initandlisten] modules: none

2018-08-25T17:45:30.140+0800 I CONTROL  [initandlisten] build environment:

2018-08-25T17:45:30.161+0800 I CONTROL  [initandlisten]     distarch: x86_64

2018-08-25T17:45:30.162+0800 I CONTROL  [initandlisten]     target_arch: x86_64

2018-08-25T17:45:30.162+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "D:\MongoDB\Server\3.2\data" }, systemLog: { destination: "file", path: "D:\MongoDB\Server\3.2\logs\log.log" } }

2018-08-25T17:45:30.164+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),

2018-08-25T17:45:31.202+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory 'D:/MongoDB/Server/3.2/data/diagnostic.data'

2018-08-25T17:45:31.202+0800 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker

2018-08-25T17:45:31.359+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

2018-08-25T17:46:53.205+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:2621 #1 (1 connection now open)

2018-08-25T17:46:53.730+0800 I NETWORK  [conn1] end connection 127.0.0.1:2621 (0 connections now open)

2018-08-25T17:47:32.471+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:2650 #2 (1 connection now open)

2018-08-25T17:47:33.031+0800 I NETWORK  [conn2] end connection 127.0.0.1:2650 (0 connections now open)

在MongoDB Libra中通過Disconnect From Mongodb 關鍵字來斷開已經建立的MongoDB數據庫連接。

示例2:通過Disconnect From Mongodb關鍵字斷開MongoDB的數據庫連接,如下圖2-2-5所示。

 

 

圖2-2-5

運行結果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase001

20180825 17:57:04.680 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 17:57:04.684 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase001

從MongoDB的日志可以看到,在執行Disconnect From Mongodb關鍵字操作后,數據庫服務端日志中已經顯示數據庫連接已經終止。

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

2.1.2        Get Mongodb Databases和Get Mongodb Collections

在MongoDB Libray中通過Get Mongodb Databases關鍵字來獲取當前MongoDB下的所有在用的數據庫。

示例1:我們通過Get Mongodb Databases關鍵字來獲取我們上面自己啟動的MongoDB下的所有數據庫,如下圖2-2-6所示。

 

圖2-2-6

運行結果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase003

20180825 21:55:34.867 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 21:55:34.873 :  INFO : | @{allDBs} | Get Mongodb Databases |

20180825 21:55:34.873 :  INFO : @{DBs} = [ local ]

20180825 21:55:34.875 :  INFO : local

20180825 21:55:34.877 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase003

從運行結果可以看到只獲取到了一個名叫local的數據庫,我們通過客戶端連接到MongoDB服務端,然后執行show databases命令,可以看到得到的結果和我們通過 Get Mongodb Databases關鍵字來獲取到的數據庫信

息是一致的,如下圖2-2-7所示。

 

 

圖2-2-7

通過Get Mongodb Collections關鍵字可以獲取到指定MongoDB數據庫下的所有Collection,該關鍵字接收[ dbName ]一個參數。

示例2:我們通過Get Mongodb Collections關鍵字來獲取到local庫下的所有Collection,如下圖2-2-8所示。

 

 

圖2-2-8

運行結果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase002

20180825 22:03:31.189 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 22:03:31.197 :  INFO : | @{allDBs} | Get Mongodb Databases |

20180825 22:03:31.198 :  INFO : @{DBs} = [ local ]

20180825 22:03:31.200 :  INFO : local

20180825 22:03:31.205 :  INFO : | @{allCollections} | Get MongoDB Collections | local |

20180825 22:03:31.206 :  INFO : @{allCollections} = [ startup_log ]

20180825 22:03:31.208 :  INFO : startup_log

20180825 22:03:31.210 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase002

從運行結果可以看到,獲取到了local庫下的Collection名叫startup_log,然后我們通過客戶端連接到服務端后,通過客戶端show collections命令來獲取一下Collection,如下圖所示,我們可以看到獲取到的Collection是完

全一致的,如下圖2-2-9所示。

 

 

圖2-2-9

2.1.3      Save Mongodb Records

Save MongoDB Records關鍵字用來向指定的Collection中保存插入的記錄,該關鍵字接收[ dbName | dbCollName | recordJSON ]這三個參數。

示例:我們向startup_log這個Collection中插入一條記錄,如下圖2-2-10所示。

 

 

圖2-2-10

運行結果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase004

20180825 22:16:34.333 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 22:16:34.344 :  INFO : | ${allResults} | Save MongoDB Records | local | startup_log | {u'book': u'RobotFramework', '_id': ObjectId('5b8164c2685b132ec4739503')} |

20180825 22:16:34.347 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase004

執行完成后,我們通過MongoDB客戶端連接到服務端,執行db.startup_log.find()命令來查看startup_log這個Collection下的記錄,如下圖所示,可以看到{"book":"RobotFramework"}這條數據記錄已經成功插入到了

MongoDB中,如下圖2-2-11所示。

 

 

圖2-2-11

2.1.4        Retrieve All Mongodb Records

Retrieve All Mongodb Records關鍵字用來獲取指定Collection下的所有數據記錄,該關鍵字接收[ dbName | dbCollName | returnDocuments=False ]這三個參數。

示例:我們通過Retrieve All Mongodb Records關鍵字來獲取startup_log下的數據記錄,如下圖2-2-12所示。

 

 

圖2-2-12

運行結果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase005

20180825 22:38:05.197 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 22:38:05.213 :  INFO : ${allResults} = [{u'hostname': u'yongqing-PC', u'pid': 8964L, u'startTimeLocal': u'Sat Aug 25 17:45:31.203', u'cmdLine': {u'storage': {u'dbPath': u'D:\\MongoDB\\Server\\3.2\\data'}, u'systemLog': {u'path': u'D:\\Mong...

20180825 22:38:05.215 :  INFO : [{u'hostname': u'yongqing-PC', u'pid': 8964L, u'startTimeLocal': u'Sat Aug 25 17:45:31.203', u'cmdLine': {u'storage': {u'dbPath': u'D:\\MongoDB\\Server\\3.2\\data'}, u'systemLog': {u'path': u'D:\\MongoDB\\Server\\3.2\\logs\\log.log', u'destination': u'file'}}, u'startTime': datetime.datetime(2018, 8, 25, 9, 45, 31), u'_id': u'yongqing-PC-1535190331203', u'buildinfo': {u'storageEngines': [u'devnull', u'ephemeralForTest', u'mmapv1', u'wiredTiger'], u'maxBsonObjectSize': 16777216, u'bits': 64, u'sysInfo': u'deprecated', u'modules': [], u'openssl': {u'compiled': u'disabled', u'running': u'disabled'}, u'javascriptEngine': u'mozjs', u'version': u'3.2.4', u'gitVersion': u'e2ee9ffcf9f5a94fad76802e28cc978718bb7a30', u'versionArray': [3, 2, 4, 0], u'debug': False, u'buildEnvironment': {u'cxxflags': u'/TP', u'cc': u'cl: Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x64', u'linkflags': u'/nologo /DEBUG /INCREMENTAL:NO /LARGEADDRESSAWARE /OPT:REF', u'distarch': u'x86_64', u'cxx': u'cl: Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x64', u'ccflags': u'/nologo /EHsc /W3 /wd4355 /wd4800 /wd4267 /wd4244 /wd4290 /wd4068 /wd4351 /we4013 /we4099 /we4930 /Z7 /errorReport:none /MT /O2 /Oy- /Gw /Gy /Zc:inline', u'target_arch': u'x86_64', u'distmod': u'', u'target_os': u'windows'}, u'targetMinOS': u'Windows Vista/Windows Server 2008', u'allocator': u'tcmalloc'}}, {u'_id': ObjectId('5b8164c2685b132ec4739503'), u'book': u'RobotFramework'}]

20180825 22:38:05.217 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase005

如下圖2-2-13所示,運行結果與我們在客戶端通過db.startup_log.find()命令行獲取到結果是一致的。

 

 

 

圖2-2-13

2.1.5       Update Many Mongodb Records

Update Many Mongodb Records關鍵字用來更新Collection中的數據記錄,該關鍵字接收[ dbName | dbCollName | queryJSON | updateJSON | upsert=False ]這五個參數。

示例1:我們更新上面示例中插入的這條{"book":"RobotFramework"}記錄為{"book":"robotFramework"},即將RobotFramework變為robotFramework,如下圖2-2-14所示。

 

 

圖2-2-14

運行結果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase006

20180825 23:05:53.692 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 23:05:53.700 :  INFO : ${newJson} = {"$set": {"book":"robotFramework"}}

20180825 23:05:53.708 :  INFO :

Matched: 1 documents

| ${allResults} | Update Many MongoDB Records | local | startup_log | {u'book': u'RobotFramework'} | {u'$set': {u'book': u'robotFramework'}} |

20180825 23:05:53.710 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase006

更新完成后,我們通過客戶端的db.startup_log.find()命令行來進行重新查詢,如下圖2-2-15所示,從查詢的結果可以看到指定的記錄已經更新完成了。

 

 

圖2-2-15

2.1.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-16所示新的名叫RobotFramework的Collection的已經創建完成。

 

圖2-2-16

如下圖2-2-17所示,創建完成后,我們使用Remove Mongodb Records關鍵字來刪除{"book":"robotFramework"}這條記錄,如下圖2-2-18所示。

 

 

圖2-2-17

 

 

圖2-2-18

運行結果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase007

20180826 09:40:05.945 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180826 09:40:05.947 :  INFO : ${Json} = {"book":"RobotFramework"}

20180826 09:40:05.970 :  INFO : | ${allResults} | Remove MongoDB Records | local | RobotFramework | {u'book': u'RobotFramework'} |

20180826 09:40:05.972 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase007

執行完成后,我們在客戶端執行db.RobotFramework.find()進行查詢時,如下圖2-2-19所示,從查詢的結果可以看到{"book":"robotFramework"}這條記錄已經被刪除了

 

 

 

 

圖2-2-19

2.1.7       MongoDB Libray庫的其它關鍵字介紹

下表2-2-1中介紹了MongoDBLibrary庫中其它關鍵字的使用示例

關鍵字

使用描述

Drop Mongodb Database

該關鍵字用來刪除指定的MongoDB數據庫,接收[ dbDelName ]一個參數,示例:

Drop Mongodb Database

Local

 

Drop Mongodb Collection

該關鍵字用來刪除指定的Collection,接收[ dbName | dbCollName ]兩個參數,示例:

Drop Mongodb Collection

local

RobotFramework

 

Get Mongodb Collection Count

該關鍵字用來獲取指定Collection下的數據記錄總數,接收[ dbName | dbCollName ]兩個參數,示例:

${counts}

Get Mongodb Collection Count

local

RobotFramework

log

${counts}

 

 

 

Retrieve And Update One Mongodb Record

該關鍵字用來獲取並且更新指定的數據記錄,關鍵字接收[ dbName | dbCollName | queryJSON | updateJSON | returnBeforeDocument=False ]這五個參數,示例:

${queryJson}

Set Variable

{"book":"RobotFramework"}

 

 

${newJson}

Set Variable

{"$set": {"book":"robotFramework"}}

 

 

Retrieve and Update One Mongodb Record

local

RobotFramework

${queryJson}

${newJson}

 

Retrieve Mongodb Records With Desired Fields

該關鍵字用來從Collection中根據指定的字段查詢出對應的滿足要求的數據記錄,接收[ dbName | dbCollName | recordJSON | fields | return__id=True | returnDocuments=False ]六個參數,示例:

${result}

Retrieve Mongodb Records With Desired Fields

local

RobotFramework

{}

book

log

${result}

 

 

 

 

 

Retrieve Some Mongodb Records

該關鍵字用來從Collection中查詢出根據指定json匹配到的數據記錄,接收

[ dbName | dbCollName | recordJSON | returnDocuments=False ]這四個參數,示例:

${result}

Retrieve Some Mongodb Records

local

RobotFramework

{"book":"robotFramework"}

log

${result}

 

 

 

 

表2-2-1

 

 

 更多更具體和詳細的精彩,敬請關注作者新書:


Robot Framework自動化測試框架核心指南京東官方購買
Robot Framework自動化測試框架核心指南電子版試讀
Robot Framework自動化測試框架核心指南天貓官方旗艦店購買
Robot Framework自動化測試框架核心指南當當網購買
Robot Framework自動化測試框架核心指南 作者簽名版本購買

相關博文匯總:

RobotFramework下的http接口自動化Create Http Context關鍵字的使用

 

RobotFramework下的http接口自動化Get關鍵字的使用

RobotFramework下的http接口自動化post關鍵字的使用

如何創建一個自動化測試項目

RobotFramework下的http接口自動化Get Response Body關鍵字的使用

RobotFramework下的http接口自動化Get Response Status 關鍵字的使用

RobotFramework下的http接口自動化Get Response header 關鍵字的使用

RobotFramework下的http接口自動化Set Request Header 關鍵字的使用

RobotFramework下HttpLibrary庫其它關鍵字

RobotFramework下的http接口自動化Set Request Body 關鍵字的使用

RobotFramework下的http接口自動化Follow Response關鍵字的使用

RobotFramework自動化測試框架的基礎關鍵字(一)

RobotFramework自動化測試框架的基礎關鍵字(二)

RobotFramework自動化測試框架的基礎關鍵字(三)

RobotFramework自動化測試框架的基礎關鍵字(四)

RobotFramework自動化測試框架的基礎關鍵字(五)

RobotFramework自動化測試框架-移動手機自動化測試AppiumLibrary介紹

RobotFramework自動化測試框架-移動手機自動化測試Open Application關鍵字的使用

RobotFramework自動化測試框架-常用斷言關鍵字

RobotFramework自動化測試框架-移動手機自動化測試AppiumLibrary庫其它的常見自動化關鍵字

RobotFramework自動化測試框架-移動手機自動化測試Input Text和Click Button關鍵字的使用

RobotFramework自動化測試框架-移動手機自動化測試Clear Text關鍵字的使用

RobotFramework自動化測試框架-移動手機自動化測試Click Element關鍵字的使用

RobotFramework自動化測試框架-移動手機自動化測試Click A Point關鍵字的使用

RobotFramework自動化測試框架-移動手機自動化測試Click Element At Coordinates關鍵字的使用

RobotFramework自動化測試框架-移動手機自動化測試Get Element Location關鍵字的使用

RobotFramework自動化測試框架-移動手機自動化測試Get Network Connection Status和Set Network Connection Status關鍵字的使用

RobotFramework自動化測試框架-移動手機自動化測試Element Attribute Should Match關鍵字的使用

RobotFramework自動化測試框架-DatabaseLibrary庫的使用(對數據庫的操作)

RobotFramework自動化測試框架-使用Python編寫自定義的RobotFramework Lib

RobotFramework自動化測試框架-Selenium Web自動化(-)-Open Browser和Close Browser

RobotFramework自動化測試框架-MongoDBLibrary庫的使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM