#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, работающий в цикле, и дождаться первого подключения, а затем вернуться из устройства.
Кто-нибудь делал что-то подобное?