[Django] #34074: 'headers' argument for test RequestFactory/Client

2 views
Skip to first unread message

Django

unread,
Oct 7, 2022, 4:10:25 AM10/7/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
---------------------------------------------+------------------------
Reporter: Adam Johnson | Owner: nobody
Type: New feature | Status: new
Component: Testing framework | Version: dev
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
---------------------------------------------+------------------------
We have `request.headers` since Django 2.2, but `RequestFactory`, and thus
`Client`, still require using the awkward meta syntax for setting headers:

{{{
self.client.get("/", HTTP_ACCEPT_LANGUAGE="en")
}}}

I propose we add support for a `headers` argument that takes a dictionary
like `request.headers`:

{{{
self.client.get("/", headers={"accept-language": "en"})
}}}

This would make tests easier to read and write, since they’d be consistent
with `HttpRequest`.

(If this is accepted and merged, open a [https://github.com/adamchainz
/django-upgrade/ django-upgrade] issue to rewrite request factory and
client invocations.)

--
Ticket URL: <https://code.djangoproject.com/ticket/34074>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Oct 8, 2022, 2:20:12 PM10/8/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-----------------------------------+------------------------------------

Reporter: Adam Johnson | Owner: nobody
Type: New feature | Status: new
Component: Testing framework | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-----------------------------------+------------------------------------
Changes (by Mariusz Felisiak):

* stage: Unreviewed => Accepted


Comment:

Sounds good.

--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:1>

Django

unread,
Oct 9, 2022, 4:45:05 PM10/9/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Owner: David
| Wobrock
Type: New feature | Status: assigned

Component: Testing framework | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by David Wobrock):

* cc: David Wobrock (added)
* owner: nobody => David Wobrock
* has_patch: 0 => 1
* status: new => assigned


Comment:

I agree that it would come in handy!

Here's a [https://github.com/django/django/pull/16163 draft PR].

--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:2>

Django

unread,
Oct 12, 2022, 4:59:31 AM10/12/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Owner: David
| Wobrock
Type: New feature | Status: assigned
Component: Testing framework | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

* needs_better_patch: 0 => 1


--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:3>

Django

unread,
Oct 13, 2022, 12:58:11 PM10/13/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Owner: David
| Wobrock
Type: New feature | Status: assigned
Component: Testing framework | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 1
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by David Wobrock):

* needs_better_patch: 1 => 0
* needs_docs: 0 => 1


--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:4>

Django

unread,
Oct 14, 2022, 10:26:15 AM10/14/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Owner: David
| Wobrock
Type: New feature | Status: assigned
Component: Testing framework | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by David Wobrock):

* needs_docs: 1 => 0


--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:5>

Django

unread,
Nov 10, 2022, 4:38:09 AM11/10/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Owner: David
| Wobrock
Type: New feature | Status: assigned
Component: Testing framework | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

* needs_better_patch: 0 => 1


--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:6>

Django

unread,
Nov 12, 2022, 11:34:05 AM11/12/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Owner: David
| Wobrock
Type: New feature | Status: assigned
Component: Testing framework | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by David Wobrock):

* needs_better_patch: 1 => 0


--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:7>

Django

unread,
Nov 14, 2022, 4:22:42 AM11/14/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Owner: David
| Wobrock
Type: New feature | Status: assigned
Component: Testing framework | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin

Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

* stage: Accepted => Ready for checkin


--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:8>

Django

unread,
Nov 14, 2022, 4:54:23 AM11/14/22
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Owner: David
| Wobrock
Type: New feature | Status: closed

Component: Testing framework | Version: dev
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak <felisiak.mariusz@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"67da22f08e05018ea968fcacbac9ac37ea925d85" 67da22f]:
{{{
#!CommitTicketReference repository=""
revision="67da22f08e05018ea968fcacbac9ac37ea925d85"
Fixed #34074 -- Added headers argument to RequestFactory and Client
classes.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:9>

Django

unread,
Jan 4, 2023, 3:42:50 AM1/4/23
to django-...@googlegroups.com
#34074: 'headers' argument for test RequestFactory/Client
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Owner: David
| Wobrock
Type: New feature | Status: closed
Component: Testing framework | Version: dev
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Mariusz Felisiak <felisiak.mariusz@…>):

In [changeset:"99bd5fb4c2d51f7bf8a19b2c12a603ab38b85ec9" 99bd5fb4]:
{{{
#!CommitTicketReference repository=""
revision="99bd5fb4c2d51f7bf8a19b2c12a603ab38b85ec9"
Refs #34074 -- Used headers argument for RequestFactory and Client in docs
and tests.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/34074#comment:10>

Reply all
Reply to author
Forward
0 new messages