我正在使用Django框架编写API测试用例,GET方法似乎正常工作但是当遇到POST错误消息时总会出现:
'dict'对象没有属性'data'。
确切的错误是,
res = respo.post({'ticker':'FIB','open': 7.0,'关闭':8.0,'音量':200})文件“C:\ Users \ sathya.m \ Desktop \ mydsite \ companies \ views.py”,第32行,在 post serializer = StockSerializer(data = request.data) AttributeError:'dict'对象没有属性'data'
views.py
def post(self,request):
serializer = StockSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=200)
tests.py
def test_getDataDetails(self):
respo = StockList()
resp = respo.get({'username':'admin','password':'pass'})
res = respo.post({'ticker': 'FIB','open': 7.0,'close':8.0,'volume':200})
self.assertEqual(res.status_code,200)
答案 0 :(得分:1)
您的视图的get和post方法期望将请求对象作为参数,而不是dict。您必须自己提供此请求对象或使用django的测试客户端(参见精细手册中有关测试的部分)
答案 1 :(得分:1)
发布工作正常,使用以下代码:
def test_getUserDetails(self):
url = '/user/'
data = {"username": "Ramu", "first_name": "Ram", "last_name": "Ram", "email": "ram@techtreeit.com"}
headers = {'Content-Type': 'application/json'}
r = requests.post(url, data=json.dumps(data), headers=headers)
self.assertEqual(r.status_code,201)