gpt4 book ai didi

python - 使用Nose测试txmongo依赖代码

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:47 33 4
gpt4 key购买 nike

我想使用nose来测试我正在使用twisted和txmongo编写的应用程序。我什至无法得到像下面这样的简单用例: 从nose.twistedtools导入 react 器,延迟,threaded_reactor 导入日志记录 来自twisted.internet导入延迟 导入txmongo

log = logging.getLogger("common.test.test_db")

conn = txmongo.lazyMongoConnectionPool('localhost', 27017, 4)

@deferred()
def test_mongo():
tdb = conn.test

@defer.inlineCallbacks
def cb(oid):
assert oid
obj = yield tdb.test.find({"_id":oid})
log.error("In callback")
assert obj

d = tdb.test.save({"s":1, "b":2})
d.addCallback(cb)

return d

但是,这总是返回以下内容:

E
======================================================================
ERROR: common.test.test_db.test_mongo
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Volumes/Users/jce/.pyenv/celery/lib/python2.6/site-packages/nose/case.py", line 186, in runTest
self.test(*self.arg)
File "/Volumes/Users/jce/.pyenv/celery/lib/python2.6/site-packages/nose/twistedtools.py", line 138, in errback
failure.raiseException()
File "/Volumes/Users/jce/.pyenv/celery/lib/python2.6/site-packages/twisted/python/failure.py", line 326, in raiseException
raise self.type, self.value, self.tb
RuntimeWarning: not connected

----------------------------------------------------------------------
Ran 1 test in 0.006s

FAILED (errors=1)

我尝试手动添加 threaded_reactor() 调用,但没有帮助。

编辑

我删除了“惰性”连接,并修改了代码,现在它可以工作了......我仍然很好奇为什么“惰性”不起作用。工作代码如下:

dbconn = txmongo.MongoConnectionPool('localhost', 27017, 4)

@deferred()
def test_mongo():
@defer.inlineCallbacks
def cb(conn):
tdb = conn.test
oid = yield tdb.test.save({"s":1, "b":2})
assert oid
log.error(str(oid))
obj = yield tdb.test.find({"_id":oid})
assert obj
log.error(str(obj))
dbconn.addCallback(cb)
return dbconn

最佳答案

MongoConnectionPool 将返回一个 deferred,当建立连接并将连接处理程序作为参数传递给回调时会触发该延迟。您应该conn = yield MongoConnectionPool()

lazyMongoConnectionPool 将直接返回连接处理程序,而不等待连接建立。

Lazy 通常由 Web 服务器和其他服务启动时不需要立即连接的服务使用。如果您想这样做,请不要使用惰性方法。

关于python - 使用Nose测试txmongo依赖代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4100455/

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