Tornado:asyncTestCase因asyncmongo而失败

时间:2013-09-20 22:06:34

标签: tornado asyncmongo

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

  

文件“〜/ envs / test / local / lib / python2.7 / site-packages / tornado / testing.py”,第223行,停止   断言_arg是无或不是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()

1 个答案:

答案 0 :(得分:0)

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

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

另外,考虑使用motor而不是asyncmongo - Motor可以更好地使用现代的Tornado成语,例如coroutines。