【发布时间】:2015-11-01 08:35:03
【问题描述】:
我写了一个视图来处理发布和获取请求:
from django.http import JsonResponse, request
import json
def Dati(request):
if request.method == 'GET':
dati = externalfunction()
return JsonResponse(dati)
elif request.method == 'POST':
data = json.loads(request.POST['json'])
for item in data:
print " POST DA clIENT:", item, data[item]
# FEEDBACK
resp = {"ok":"ricevuto"}
return JsonResponse(resp)
这里是 test.py
from rest_framework.test import APIClient
from myapp.views import Dati
class ComPageTest(TestCase):
def test_url_resolves_to_vista_Dati(self):
found = resolve('/mixd/')
self.assertEqual(found.func, Dati)
def test_Dati_GET(self):
client = APIClient()
response = client.get('/mixd/')
self.assertIn(b'power', response.content)
def test_Dati_POST(self):
client = APIClient()
response = client.post('/mixd/', {'power': 'on'}, format='json')
self.assertIn(b'ok', response.content)
GET 测试运行正常,POST 返回此错误:
2015-08-09 10:32:49,131 - ERROR - Internal Server Error: /mixd/
Traceback (most recent call last):
File "/home/x/.virtualenvs/venvv/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
/datastructures.py", line 322, in __getitem__
raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'json'"
*** MultiValueDictKeyError: "'json'"
如果我手动访问该页面,一切似乎都很好 POST 似乎工作。 有什么特殊的语法要遵循吗?
【问题讨论】:
标签: django unit-testing django-rest-framework