Nar*_*mma 32 django django-rest-framework
我正在使用REST API的django-rest-framework(最新版),并使用内置的测试客户端在django中实现了很少的测试用例.
以下django测试用例与django版本<1.5一起工作正常
self.client.put('/core/accounts/%s/'% self.account.id,
data = prepare_dict(self.account),
HTTP_AUTHORIZATION=self.token)
Run Code Online (Sandbox Code Playgroud)
升级到django 1.5,除了与HTTP PUT相关的测试外,所有测试都在通过, 同时调查发现的问题@ https://docs.djangoproject.com/en/dev/releases/1.5/#options-put-and-delete-请求合的测试客户端
如果在没有content_type的PUT请求中使用data参数,则必须先对数据进行编码,然后再将其传递给测试客户端并设置content_type参数.
因此,更新了我的测试以反映此更改并尝试了以下,但仍然获得http 415而不是http 200
from django.test.client import MULTIPART_CONTENT, BOUNDARY, encode_multipart
self.client.put('/core/accounts/%s/'% self.account.id,
data = encode_multipart(BOUNDARY, prepare_dict(self.account)),
content_type=MULTIPART_CONTENT,
HTTP_AUTHORIZATION=self.token)
Run Code Online (Sandbox Code Playgroud)
知道我错过了什么吗?PS:django-rest-framework内置Web UI的所有功能都运行良好
Tom*_*tie 39
你绝对是在正确的轨道上 - 在这种情况下的突破性测试肯定是由于Django改变PUT了测试客户端的行为.
你修复看起来我的权利了.415是"不支持的媒体类型"响应,这意味着请求内容类型不是由为视图配置的任何解析器可以处理的内容.
通常在这种情况下,这是由于忘记设置请求的内容类型,但看起来你已经正确设置为 multipart/form-data; boundary=...
要仔细检查的事情:
response.data显示为错误详细信息?DEFAULT_PARSER_CLASSES设置中配置了什么,如果您有一个,或者您在视图属性上设置了parser_classes什么?content_type测试中没有拼写错误(尽管这里是正确的).编辑:
感谢您的评论 - 这清除了一切.您只安装了JSON解析器,但是您尝试发送Form编码数据.你应该:
FormParser和MultiPartParser您的设置/查看,所以它支持的形式编码.(另请注意,默认DEFAULT_PARSER_CLASSES设置确实包含它们,因此如果您没有设置任何内容,它将按预期工作)要么
json编码对代码进行编码,而不是表单编码data=json.dumps(prepare_dict(self.account)), content_type='application/json'.出现 415 错误,因为我使用了 的实例django.test import Client而不是rest_framework.test import APIClient. APIClient将以正确的方式自动对数据进行编码。
纯json请求:
client = APIClient()
client.post(url, format='json', data=json, headers=headers)
client.put(url, format='json', data=json, headers=headers)
Run Code Online (Sandbox Code Playgroud)
创建/更新包括文件:
client = APIClient()
client.post(url, format='multipart', data=data, headers=headers)
client.put(url, format='multipart', data=data, headers=headers)
Run Code Online (Sandbox Code Playgroud)
我在这个 415 错误上花了很多时间,所以我希望这对其他人有帮助。
| 归档时间: |
|
| 查看次数: |
11741 次 |
| 最近记录: |