Тесты для Django Channels/WebSockets
какой хороший и простой способ тестирования consumers.py в Django Channels (конечные точки websocket). Я видел https://channels.readthedocs.io/en/stable/topics/testing.html, но для меня это слишком сложно и я не уверен, что это то, что мне нужно. Например, я не нашел информации о том, как передать пользователя в scope для правильного потребительского тестирования или как сделать свой собственный middleware для аутентификации. Может быть есть кто-то "продвинутый" на django каналах и вы тестировали потребителей. Если да, пожалуйста, поделитесь тем, как вы это сделали, потому что я действительно не могу нагуглить, как тестировать эти вещи.
Я уже достиг этой стадии:
class TestConsumer(TestCase):
async def test_consumer(self):
communicator = WebsocketCommunicator(UserLocationConsumer.as_asgi(), path='/ws/user-track-location'))
connected, subprotocol = await communicator.connect()
self.assertTrue(connected, 'Could not connect')
await communicator.send_json_to(content='test')
result = await communicator.receive_json_from()
print(result)
await communicator.disconnect()
Это позволяет мне ввести моего потребителя, но внутри потребителя нет области видимости, потому что никакая авторизация не передавалась, поэтому я не могу полностью покрыть функциональность моего потребителя тестами:
ERROR: test_consumer (gps.tests.test_consumers.TestConsumer)
self.user_id = self.scope['user'].id
KeyError: 'user'