APITestCase 中的请求标头

int*_*_32 4 django django-testing django-rest-framework

我有一个测试 ( APITestCase),我需要指定自定义标头:

class ListAppsAPITest(APITestCase):
    def test_list_apps_versions(self):
        response = self.client.get(reverse('api:applications:list'), None, **{'Device-Id': 'deadbeef'})
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的参数组合,但没有奏效。

如何在测试中指定自定义标头?

Toa*_* Ho 5

仅仅因为 Django 有他们自己的方式来定义标头,你可以看看这里,看看为什么以及如何实现这一点。

除了上面给出的 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'})
Run Code Online (Sandbox Code Playgroud)

希望有帮助!