我试图测试与龙卷风建立了这个网页套接字句柄这我使用的是内置模块tornado.testing
一些调整,从一个简单的AsyncHTTPTestCase
调用main.py
龙卷风WebSocket连接是不是一个测试套件
import tornado.websocket
class SocketHandler(tornado.websocket.WebSocketHandler):
def open(self):
print(' [T] Websocket connection open')
def on_message(self, message):
print(' [T] Websocket message received: %s' % message)
def on_close(self):
print(' [T] Websocket connection closed')
内关闭例如:
import tornado.testing
import tornado.web
import tornado.websocket
from main import SocketHandler
class TestWebSockets(tornado.testing.AsyncHTTPTestCase):
def get_app(self):
return tornado.web.Application([(r'/', SocketHandler)])
@tornado.testing.gen_test
async def test_async_client(self):
url = "ws://localhost:" + str(self.get_http_port()) + "/"
client = await tornado.websocket.websocket_connect(url)
client.write_message('message')
client.close()
该测试通过。但是,当我运行pytest --cov-report term-missing --cov=.
时,它指出没有达到main.py
的最后一行,即服务器未关闭。
任何人都知道发生了什么?我已经尝试过在关闭后添加延迟,但没有成功。
0.1秒也适用于我 – Pierce
谢谢,我正在使用同步睡眠功能,这是行不通的。你知道为什么吗? – gsmafra
服务器端是异步python在同一个进程中,使用相同的事件循环。它在同步睡眠期间根本没有运行。 – Pierce