0

尝试对 asyncmongo 查询进行单元测试。调用 wait() 时出现以下错误。这是因为 asyncmongo 使用 2 个参数调用回调吗?

文件“~/envs/test/local/lib/python2.7/site-packages/tornado/testing.py”,第 223 行,停止断言 _arg 是 None 或不是 kwargs

class MyTestCase2(AsyncTestCase):
    def test_async_mongo(self):
        self.db = asyncmongo.Client(pool_id='mydb', host='127.0.0.1', port=27017, maxcached=10, maxconnections=50, dbname='bench')
        self.db["ss"].insert({"a": "1"}, callback=self.stop)
        self.wait()
4

1 回答 1

0

是的,这是因为 AsyncTestCase 需要一个参数的函数,而 asyncmongo 使用两个。此类问题的一般解决方案是适配器功能:

self.db["ss"].insert({"a": "1"},
    callback=lambda response, error: self.stop((response, error)))
response, error = self.wait()

顺便说一句,考虑使用电机而不是 asyncmongo - 电机与现代 Tornado 成语(如协程)一起工作得更好。

于 2013-10-06T01:05:08.233 回答