【问题标题】:How do I add a header to a Django RequestFactory request?如何向 Django RequestFactory 请求添加标头?
【发布时间】:2021-08-10 14:56:17
【问题描述】:

要手动发送带有标头的 GET 请求,我使用 curl:

curl http://example.com/endpoint -H "Key: Value"

我想编写一个单元测试,它发出一个包含标头的请求(使用django.test.RequestFactory)。如何在请求中添加标头?

为清楚起见,下面是我希望 能够做的一个示例,尽管我在下面写的是 不是 有效代码,因为 RequestFactory.get()没有headers 参数:

from django.test import TestCase, RequestFactory


class TestClassForMyDjangoApp(TestCase):
    def test_for_my_app(self):
        factory = RequestFactory()
        
        my_header = dict(key=value, another_key=another_value)
        factory.get('/endpoint/', headers=my_header)

【问题讨论】:

    标签: django unit-testing http-headers


    【解决方案1】:

    您需要将 HTTP_* kwargs 传递给 get(...)(或任何有效的 http 方法)以在请求中传递自定义 HTTP 标头。

    
    class TestClassForMyDjangoApp(TestCase):
        def test_for_my_app(self):
            factory = RequestFactory()
            my_header = {"HTTP_CUSTOM_KEY": "VALUE"}
            request = factory.get("/some/url/", **my_header)
            print(request.headers) # {'Custom-Key': 'VALUE'}

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2012-10-12
    相关资源
    最近更新 更多