Я хочу протестировать моего потребителя, который использует scope['url_route']
, но использует HttpCommunicator
или ApplicationCommunicator
, этот параметр не установлен.Как я могу установить этот параметр?Документация по тестированию очень ограничена и не имеет никакой документации по этому https://channels.readthedocs.io/en/latest/topics/testing.html.
test.py
from channels.testing import HttpCommunicator
import pytest
from my_app import consumers
@pytest.mark.asyncio
async def test_consumers():
communicator = HttpCommunicator(consumers.MyConsumer, 'GET', '/project/1')
response = await communicator.get_response()
assert response['status'] == 400
my_app.py
import json
from channels.db import database_sync_to_async
from channels.generic.http import AsyncHttpConsumer
from projects import model
class MyConsumer(AsyncHttpConsumer):
async def handle(self, body):
_id = int(self.scope['url_route']['kwargs'].get('project_id', 1))
record = await database_sync_to_async(models.Project.objects.get)(id=_id)
data = json.dumps({"id": _id})
await self.send_response(200, data.encode('utf8'))