gpt4 book ai didi

python - Robot Framework 的 Mongo Db 扩展库返回错误记录

转载 作者:行者123 更新时间:2023-12-01 04:35:05 24 4
gpt4 key购买 nike

我已经为 Robot Framework 扩展了 MongoDbLibrary,以便可以使用 .skip()、.take() 和 .order()

def _retrieve_mongodb_records_ex(self, dbName, dbCollName, recordJSON, sorting, skip=0, take=None, fields=[], returnDocuments=False):
db = None
try:
dbName = str(dbName)
dbCollName = str(dbCollName)
criteria = dict(json.loads(recordJSON))
db = self._dbconnection['%s' % (dbName,)]
coll = db['%s' % (dbCollName)]
if fields:
results = coll.find(criteria, fields)
else:
results = coll.find(criteria)
if sorting:
results = results.sort(sorting)
if (skip):
skip = int(skip)
if skip > 0:
results = results.skip(skip)
if take:
results = results.limit(int(take))
if returnDocuments:
return list(results)
else:
response = ''
for d in results:
response = '%s%s' % (response, d.items())
return response
finally :
if db :
self._dbconnection.end_request()

我在 python 上进行了测试:

mongo.connect_to_mongodb("mongodb://somehost", 27017)
result = mongo.retrieve_some_records("MMMongoDB", "importjob", "{\"Status\" : 9}", [("DateCreated", -1)], "0", "1", True)

此测试返回正确的数据

在机器人框架中,我在关键字中使用此方法:

Get Some Mongo Records With Order And Limit
[Arguments] ${MongoHostProp} ${MongoPortProp} ${MongoDbNameProp} ${MongoCollProp} ${QueryProp} ${Sorting}
... ${Skip} ${Take}
Connect To MongoDB ${MongoHostProp} ${MongoPortProp}
${records}= Retrieve Some Records ${VAR_ImportMongoDbName} ${VAR_ImportJobMongoCollName} ${QueryProp} ${Sorting} ${Skip}
... ${Take} true
Disconnect From Mongodb
[Return] ${records}

但是此关键字返回与 ${QueryProp} 匹配的第一个项目,忽略 ${Sorting}。

我比较了发送给这个 python 方法的参数 - 它们是相等的。有谁知道问题出在哪里吗?

最佳答案

我相信pymongo不将排序参数视为键值对的原因是RobotFramework倾向于将每个值都转换为字符串。

您的 Python 代码应该检查该值是否为字符串,并对其进行评估以将其返回键值对列表。

    if isinstance(sorting, string_types):
sorting = eval(sorting)

Pymongo 将字符串解释为单个排序键,并通过添加默认方向“pymongo.ASCENDING”将其转换为对。

关于python - Robot Framework 的 Mongo Db 扩展库返回错误记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31850699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com