I am trying to decide whether I should use Django\'s Client
or RequestFactory
to test my views.
I am creating my server using DjangoRESTFramewo
RequestFactory
and Client
have some very different use-cases. To put it in a single sentence: RequestFactory
returns a request
, while Client
returns a response
.
The RequestFactory
does what it says - it's a factory to create request
objects. Nothing more, nothing less.
The Client
is used to fake a complete request-response cycle. It will create a request
object, which it then passes through a WSGI handler. This handler resolves the url, calls the appropriate middleware, and runs the view. It then returns the response object. It has the added benefit that it gathers a lot of extra data on the response
object that is extremely useful for testing.
The RequestFactory
doesn't actually touch any of your code, but the request
object can be used to test parts of your code that require a valid request
. The Client
runs your views, so in order to test your views, you need to use the Client
and inspect the response. Be sure to check out the documentation on the Client
.