尝试对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()
答案 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。