Skip to content

Commit

Permalink
Improved async request factory and client docs.
Browse files Browse the repository at this point in the history
  • Loading branch information
David-Wobrock authored and felixxm committed Nov 10, 2022
1 parent d6fbfea commit 0931d5b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
5 changes: 5 additions & 0 deletions docs/topics/testing/advanced.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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``.
Expand All @@ -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
=========================

Expand Down
6 changes: 5 additions & 1 deletion docs/topics/testing/tools.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ short:
* Use Django's test client to establish that the correct template is being
rendered and that the template is passed the correct context data.

* Use :class:`~django.test.RequestFactory` to test view functions directly,
* Use :class:`~django.test.RequestFactory` to test view functions directly,
bypassing the routing and middleware layers.

* Use in-browser frameworks like Selenium_ to test *rendered* HTML and the
Expand Down Expand Up @@ -1905,9 +1905,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
Expand Down

0 comments on commit 0931d5b

Please sign in to comment.