2017-07-14 65 views
0

我有需要socketio-server的測試系統(SUT)。該服務器將在某些功能中響應SUT。所以Socketio-server對我的SUT來說是必要的環境。如何從pytest夾具運行aiohttp應用程序

對於socketio-server,我選擇了使用python-socketio的aiohttp。功能

比如我socketio服務器:

from aiohttp import web 
import socketio 


sio = socketio.AsyncServer() 
app = web.Application() 
sio.attach(app) 


@sio.on('commands') 
async def message_handler(sid, msg): 
    if msg['data']['command'] == 'terminal_settings_info': 
     response_msg = {'handler': msg['handler'], 
         'data': {'result': 1, 
           'is_success': True, 
           'TerminalID': 5, 
           'request_id': msg['data']['request_id']}} 
     await sio.emit('commands', response_msg) 

    elif msg['data']['command'] == 'get_agent_info': 
     response_msg = {'handler': msg['handler'], 
         'data': {'result': 1, 
           'is_success': True, 
           'terminal_address': 'Zelenograd', 
           'agent_support_phone': '8-888-88-88-88', 
           'mf_retail': True, 
           'request_id': msg['data']['request_id']}} 
     await sio.emit('commands', response_msg) 

    else: 
     raise ValueError('Unknown request.\nMessage: ' + msg.__repr__()) 


web.run_app(app, host='127.0.0.1', port=1234) 

我想設置從pytest燈具測試完成後,該socketio服務器之前運行測試和拆卸。所以,這個服務器必須非阻塞pytest線程。 這是我的目的。 我該怎麼做?

我很擅長Python中的pytest和syncrhonous代碼執行,但是用於異步編程(asyncio,aiohttp)的newbi和使用線程,子進程或多處理的newbi。

回答