From 8c8427c35ee82648e81eb4982a4e04ccea9edd5c Mon Sep 17 00:00:00 2001 From: David Wobrock Date: Thu, 10 Nov 2022 09:29:49 +0100 Subject: [PATCH] [4.1.x] Improved async request factory and client docs. Backport of 0931d5b087a37545af0bef597deac03b5f0f7db0 from main --- docs/topics/testing/advanced.txt | 5 +++++ docs/topics/testing/tools.txt | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/docs/topics/testing/advanced.txt b/docs/topics/testing/advanced.txt index 2635ce445d..e6ebc346dd 100644 --- a/docs/topics/testing/advanced.txt +++ b/docs/topics/testing/advanced.txt @@ -70,6 +70,8 @@ The following is a unit test using the request factory:: AsyncRequestFactory ------------------- +.. class:: AsyncRequestFactory + ``RequestFactory`` creates WSGI-like requests. If you want to create ASGI-like requests, including having a correct ASGI ``scope``, you can instead use ``django.test.AsyncRequestFactory``. @@ -78,6 +80,9 @@ This class is directly API-compatible with ``RequestFactory``, with the only difference being that it returns ``ASGIRequest`` instances rather than ``WSGIRequest`` instances. All of its methods are still synchronous callables. +Arbitrary keyword arguments in ``defaults`` are added directly into the ASGI +scope. + Testing class-based views ========================= diff --git a/docs/topics/testing/tools.txt b/docs/topics/testing/tools.txt index c4f64fef94..f9764998ca 100644 --- a/docs/topics/testing/tools.txt +++ b/docs/topics/testing/tools.txt @@ -1906,9 +1906,13 @@ If you are testing from an asynchronous function, you must also use the asynchronous test client. This is available as ``django.test.AsyncClient``, or as ``self.async_client`` on any test. +.. class:: AsyncClient(enforce_csrf_checks=False, raise_request_exception=True, **defaults) + ``AsyncClient`` has the same methods and signatures as the synchronous (normal) test client, with two exceptions: +* In the initialization, arbitrary keyword arguments in ``defaults`` are added + directly into the ASGI scope. * The ``follow`` parameter is not supported. * Headers passed as ``extra`` keyword arguments should not have the ``HTTP_`` prefix required by the synchronous client (see :meth:`Client.get`). For