Запустите asyncio.serve и цикл asyncio с тестового устройства, не блокируя устройство?

#python-3.x #multithreading #pytest #robotframework #python-asyncio

Вопрос:

Я ищу, чтобы протестировать внешнее сетевое устройство с помощью pytest или robotframework. Устройство использует websocket для подключения, и я хотел бы, чтобы мой набор тестов действовал как сервер.

В идеале моя настройка будет выглядеть так:

Testfixture запускается один раз перед всеми тестами: Запуск сервера ожидает подключения клиента.

Демонтажное приспособление, которое закрывает все нити/соединения после выполнения всех тестов.

TestA: Получает сокет из testfixture и выполняет тесты с использованием send/recv

TestB: Получает сокет от testfixture и выполняет тесты с использованием send/recv

testC: Получает сокет из testfixture и выполняет тесты с помощью send/recv

Моя проблема заключается в исправлении теста(Psedocode)

 @pytest.fixture(scope="module") def setup():  asyncio.ensure_future(start_server())  asyncio.run() # I need this to not block the fixture  socket = wait_for_Client_Connect()  return socket  def test_A(setup):  #do send/recv using socket  def test_B(setup):  #do send/recv using socket  def test_C(setup):  #do send/recv using socket  

В основном моему устройству нужно запустить цикл событий asyncio, запустить сервер websocket, работающий в цикле, и дождаться первого подключения, а затем вернуться из устройства.

Кто-нибудь делал что-то подобное?