2016-12-28 82 views
1

我使用Django框架,GET方法似乎是工作好的,但是當它涉及到POST錯誤消息總是顯示了編寫測試用例的API:「快譯通」對象有沒有屬性「數據」

'dict' object has no attribute 'data'.

精確誤差,

res = respo.post({'ticker': 'FIB','open': 7.0,'close':8.0,'volume':200}) File "C:\Users\sathya.m\Desktop\mydsite\companies\views.py", line 32, in post serializer = StockSerializer(data=request.data) AttributeError: 'dict' object has no attribute '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) 
+1

您應該使用'request.POST'而不是'request.data' –

+0

感謝您的回覆。 – Rubi

+0

獲得以下錯誤:AssertionError:403!= 200 – Rubi

回答

1

您的視圖的GET和POST方法需要一個請求對象作爲參數,而不是一個字典。你要麼必須提供申請對象自己或使用Django的測試客戶端(CF有關測試的部分在精細的手工)

+0

感謝Bruno。 現在我使用了測試客戶端。 – Rubi

+0

謝謝布魯諾。 現在我使用了測試客戶端。 c = Client() c.auth = HTTPBasicAuth('admin','pass')「 response = c.post('/ stocks /',json = {'id':4,'ticker':' FIB','open':7.0,'close':8.0,'volume':200,'owner_id':1}) self.assertEqual(response.status_code,200) – Rubi

+0

有迴應錯誤: – Rubi

0

後工作正常,通過使用此代碼如下:

def test_getUserDetails(self): 
     url = '/user/' 
     data = {"username": "Ramu", "first_name": "Ram", "last_name": "Ram", "email": "[email protected]"} 
     headers = {'Content-Type': 'application/json'} 
     r = requests.post(url, data=json.dumps(data), headers=headers) 
     self.assertEqual(r.status_code,201) 
相關問題