要做API或者UI自动化,甚至于手工测试,对于测试数据的准备,我们不可能手动的一条一条添加,正好实验了一把用RF来操控MongoDB。
以下只是个简单的实验,证明能够操作MongoDB。
环境准备
从官网的Library中查找 MongoDB library,或者直接Github Robotframework-MongoDB-Library。
安装pymongo
1
pip install pymongo
安装Library
You can install by pulling down source to ‘C:\Python27\Lib\site-packages’ and executing the following:1
python setup.py install
数据库连接
本来对这块也不是很熟悉,之前没用过,折腾了好长时间在这个地方,按照官方的使用方法一直不成功1
2# Or for an authenticated connection
Connect To MongoDB admin:admin@foo.bar.org ${27017}
重新查询了pymongo和mongoClient,这里做个说明:
对于authenticated connection,用Connect To Mongodb user:password@ip/db 27017
,一直报错FAIL : ValueError: Port must be an integer between 0 and 65535: password@ip/db
。
这里必须要用MongoDB的URL connection scheme
数据库查询
这里验证了工作中可能要用到的两个查询关键字,有需要的话,再研究剩下的查询关键字。Retrieve Some Mongodb Records
:根据Jason文件条件在相关数据库和Collection中查询记录。记住:字符串要用双引号,单引号会报告。Retrieve Mongodb Records With Desired Fields
:查询出指定列的显示, 相当于关系Sql: select a and b from table。记住:对于指定列,常规的直接用key就好;有嵌套的,用dot连接(e.g., address.city);指定多个列,每个列之间用逗号隔开。
数据库更新
这里不做说明,会用就好了。
数据库插入
数据库删除
以上的操作,已经能满足当前工作中的需要,只做这些验证就OK了。
特别说明:
项目中实际用到的Jason文件1
2
3
4
5
6{
"_id" : NumberLong("444206992590551"),
"name" : "xx",
"createdId" : NumberLong("884011643699965"),
"createdDate" : ISODate("2016-05-17T00:43:43.555Z")
}
在使用的过程中,只要是用到‘_id’时,就报格式不对的错
FAIL : TypeError: id must be an instance of (bytes, unicode, ObjectId), not <type 'int'>
,查看了一下原码,把下面的代码注释掉就可以了。1
2if '_id' in recordJSON:
recordJSON['_id'] = ObjectId(recordJSON['_id'])把要用到的函数都一并修改掉。
- 还有就是时间的问题,如果不是必须的,这些字段就不要添加了。
还有这么一种情况,必须要添加日期字段,这里就是有错误:在Json文件中只能用字符串的形式,保存到库里”createdDate” : “2016-05-20 02:48:35.620000”,但是实际上应该是”createdDate” : ISODate(“2016-05-17T03:01:23.145Z”),目前还没有找到合适的方法,比较头疼,做个标记。