Robot Framework-MongoDB

要做API或者UI自动化,甚至于手工测试,对于测试数据的准备,我们不可能手动的一条一条添加,正好实验了一把用RF来操控MongoDB。
以下只是个简单的实验,证明能够操作MongoDB。

环境准备

从官网的Library中查找 MongoDB library,或者直接Github Robotframework-MongoDB-Library

  1. 安装pymongo

    1
    pip install pymongo
  2. 安装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")
}

  1. 在使用的过程中,只要是用到‘_id’时,就报格式不对的错FAIL : TypeError: id must be an instance of (bytes, unicode, ObjectId), not <type 'int'>,查看了一下原码,把下面的代码注释掉就可以了。

    1
    2
    if '_id' in recordJSON:
    recordJSON['_id'] = ObjectId(recordJSON['_id'])

    把要用到的函数都一并修改掉。

  2. 还有就是时间的问题,如果不是必须的,这些字段就不要添加了。
    还有这么一种情况,必须要添加日期字段,这里就是有错误:在Json文件中只能用字符串的形式,保存到库里”createdDate” : “2016-05-20 02:48:35.620000”,但是实际上应该是”createdDate” : ISODate(“2016-05-17T03:01:23.145Z”),目前还没有找到合适的方法,比较头疼,做个标记。
唐胡璐 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
分享创造价值,您的支持将鼓励我继续前行!