我正在使用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的所有功能都运行良好