#python-3.x #django #django-rest-framework #django-testing
Вопрос:
Я пытаюсь протестировать представление, в котором используются некоторые заголовки. В моем тестовом коде у меня есть что-то вроде этого:
headers = {'X-Github-Event': 'pull_request'}
body = {useful stuff}
url = reverse(my_view)
Я пробовал делать запросы к своему представлению, используя все возможные комбинации следующих клиентов и отправляя вызовы:
client = Client(extra=headers)
client = APIClient(headers=headers)
client = APIClient(extra=headers)
response = client.post(url, data=body, format="json", headers=headers)
response = client.post(url, data=body, format="json", extra=headers)
Мой взгляд на самом деле выглядит так:
@api_view(["POST", "GET"])
def github_webhook(request):
print(request.headers)
Мой X-Github-Event
заголовок никогда не распечатывается моим представлением, когда он вызывается из моего тестового кода.
Если я запущу runserver и отправлю запрос на эту конечную точку, то заголовки будут работать идеально. Это просто сломанный тестовый код.
Что я здесь упускаю? Как я могу установить заголовки для своих тестов?
Ответ №1:
Я думаю, что следующий фрагмент поможет вам:
import json
from django.test import TestCase
from rest_framework.test import APIClient
class FooTestCase(TestCase):
def setUpTestData(cls):
cls.client = APIClient(ACCEPT='application/json')
def test_foo(self):
headers = {"ACCEPT": "application/json", 'HTTP_X_GITHUB_EVENT': 'pull_request'}
url = reverse(my_view)
payload = json.dumps(body)
response = self.client.post(url, data=payload, content_type='application/json', **headers)