【问题标题】:Request headers in APITestCaseAPITestCase 中的请求标头
【发布时间】:2020-01-30 02:29:55
【问题描述】:
我有一个测试(APITestCase),我需要指定自定义标题:
class ListAppsAPITest(APITestCase):
def test_list_apps_versions(self):
response = self.client.get(reverse('api:applications:list'), None, **{'Device-Id': 'deadbeef'})
我尝试了不同的参数组合,但没有奏效。
如何在测试中指定自定义标头?
【问题讨论】:
标签:
django
django-rest-framework
django-testing
【解决方案1】:
仅仅因为 Django 有自己的方式来定义标头,您可以查看here 了解为什么以及如何实现。
除了上面给出的 CONTENT_LENGTH 和 CONTENT_TYPE 之外,请求中的任何 HTTP 标头都通过将所有字符转换为大写、用下划线替换任何连字符并在名称中添加 HTTP_ 前缀来转换为 META 键。因此,例如,一个名为 X-Bender 的标头将映射到 META 键 HTTP_X_BENDER。
在你的情况下,像这样:
class ListAppsAPITest(APITestCase):
def test_list_apps_versions(self):
response = self.client.get(reverse('api:applications:list'), None, **{'HTTP_DEVICE_ID': 'deadbeef'})
希望有帮助!