Hi there,
I was trying to write a test for a consumer. It is just a very simply AsyncHttpConsumer subclass that awaits on asyncio.sleep(3) and returns a "OK" in plain text.
The test case is:
@pytest.mark.asyncio
async def test_my_consumer():
communicator = HttpCommunicator(BasicHttpConsumer, "GET", "asynchttp")
response = await communicator.get_response()
assert response["status"] == 200
assert response["body"] == b"OK"
1) Error 1:
I run it with command "pytest xxxx.py"
The first error I got was:
django.core.exceptions.ImproperlyConfigured: Requested settings, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
I google online and found this fix:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MODULE_PATH_TO.settings")
2) Error 2:
The new error I am getting is:
self = <async_timeout.timeout object at 0x7fe427eca470>, exc_type = <class 'concurrent.futures._base.CancelledError'>
def _do_exit(self, exc_type: Type[BaseException]) -> None:
if exc_type is asyncio.CancelledError and self._cancelled:
self._cancel_handler = None
self._task = None
> raise asyncio.TimeoutError
E concurrent.futures._base.TimeoutError
But If I change async.sleep(3) to async.sleep(0) the test passed. Not sure why
Also how to test url mapping works correctly?
Thanks
Drew