我正在尝试为 tornado_json Web 应用程序设置单元测试。我正在尝试测试一个 post 处理程序,但是我失败了,因为该fetch
方法似乎返回了一个 _asyncio.Future 对象,该对象似乎永远不会完成/具有结果集。我试图发布代码摘要,目前我只是返回 ['test'] 项目。我查看了https://github.com/tornadoweb/tornado/issues/1154以及 tornado 文档。听起来我需要 self.stop 或 self.wait() 来完成任务,但我还没有弄清楚如何让它工作,或者这是否是解决方案。任何帮助将不胜感激。
@schema.validate(
input_schema={
"type": "object",
"properties": {
"path": {"type": "string"}
},
"required": ["path"]
},
output_schema={
"type": "array",
"items": {
"properties": {"type": "string"}
}
}
)
@coroutine
def post(self):
attributes = dict(self.body)
path = attributes["path"]
response = ["test"]
return response
@gen_test
def test_POST_method(self):
body = json.dumps({'path': 'bin'})
self.http_client.fetch(self.get_url('/api/listmyfiles'),
method="POST",
body=body
)
response = self.wait()
print(response.result()))
我得到的错误是:
asyncio.base_futures.InvalidStateError: Result is not set.