我試圖測試與龍捲風建立了這個網頁套接字句柄這我使用的是內置模塊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