筆者接着 RobotFramework自動化測試框架-DatabaseLibrary庫的使用(對數據庫的操做)javascript
繼續分享robotframework 對數據庫中的MongoDB的詳細操做。這是筆者第二篇關於robotframework 對數據庫的操做的分享介紹。html
MongoDB是很是經常使用的一個非關係型數據庫,在RobotFramework中,也提供了對MongoDB數據庫測試操做的支持。咱們能夠經過在瀏覽器中訪問github的網站地址java
https://github.com/iPlantCollaborativeOpenSource/Robotframework-MongoDB-Library 便可以看到該庫的相關安裝說明和API介紹,以下圖2-2-1所示。git
圖2-2-1github
做者的原創文章,轉載須註明出處。原創文章歸做者全部,歡迎轉載,可是保留版權。對於轉載了博主的原創文章,不標註出處的,做者將依法追究版權,請尊重做者的成果,轉載請註明連接:http://www.javashuo.com/article/p-cmyxdpez-ev.html數據庫
。json
安裝完成後,在使用MongoDBLibrary庫時,須要在測試套件中,預先導入該庫,才能夠在用例中使用MongoDBLibrary庫中的關鍵字,以下圖2-2-2所示。windows
圖2-2-2瀏覽器
在MongoDB Libray中經過Connect To Mongodb 關鍵字來鏈接到MongoDB數據庫,該關鍵字接收[ dbHost=localhost | dbPort=27017 | dbMaxPoolSize=10 | dbNetworkTimeout=None | dbDocClass= | dbTZAware=False ]session
這六個參數,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)
在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
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
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
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
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-2-1中介紹了MongoDBLibrary庫中其它關鍵字的使用示例
關鍵字 |
使用描述 |
|||||||||||||||
Drop Mongodb Database |
該關鍵字用來刪除指定的MongoDB數據庫,接收[ dbDelName ]一個參數,示例:
|
|||||||||||||||
Drop Mongodb Collection |
該關鍵字用來刪除指定的Collection,接收[ dbName | dbCollName ]兩個參數,示例:
|
|||||||||||||||
Get Mongodb Collection Count |
該關鍵字用來獲取指定Collection下的數據記錄總數,接收[ dbName | dbCollName ]兩個參數,示例:
|
|||||||||||||||
Retrieve And Update One Mongodb Record |
該關鍵字用來獲取而且更新指定的數據記錄,關鍵字接收[ dbName | dbCollName | queryJSON | updateJSON | returnBeforeDocument=False ]這五個參數,示例:
|
|||||||||||||||
Retrieve Mongodb Records With Desired Fields |
該關鍵字用來從Collection中根據指定的字段查詢出對應的知足要求的數據記錄,接收[ dbName | dbCollName | recordJSON | fields | return__id=True | returnDocuments=False ]六個參數,示例:
|
|||||||||||||||
Retrieve Some Mongodb Records |
該關鍵字用來從Collection中查詢出根據指定json匹配到的數據記錄,接收 [ dbName | dbCollName | recordJSON | returnDocuments=False ]這四個參數,示例:
|
表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