Django 测试客户端:如何删除 http 标头

Sbr*_*rom 5 python django unit-testing http-headers

我正在尝试为一段代码编写单元测试,以检查是否缺少标头。如何从 Django 的测试客户端中省略 http_referer 标头(或任何与此相关的标头)?

def testCase(self):
    response = self.client.get('/some_url/')
    self.assertNotEqual(500, response.status_code)
Run Code Online (Sandbox Code Playgroud)

dm0*_*514 2

您可以使用Django 的 RequestFactory来构建请求,然后在调用函数之前修改请求对象,而不是使用内置的测试客户端:

from django.test.client import RequestFactory
from django.test import TestCase

from yourapp.view import yourfunction

class YourTest(TestCase)
    def setUp(self):
        self.factory = RequestFactory()

    def testCase(self):
        request = self.factory.get('/yoururl/')
        del request.META['HTTP_REFERER']
        yourfunction(request)
Run Code Online (Sandbox Code Playgroud)