2016-07-23 11 views
3

Ich versuche, automatisierte Tests zu erstellen, und was ich will, ist in meinem Testfall überprüfen, wenn es einen Standort-Header, der auf meinem Code in views.py (bereits getestet in Advanced REST-Client). Allerdings kann ich es nicht in meinem tests.py zu analysierenDjango Rest Framework Antwort Header testen

Hier ist mein Code:

from rest_framework import status 
from rest_framework.test import APITestCase 
url_1 = reverse('artists-list') 

class ArtistTest(APITestCase): 
    # Check the response if there is no data 
    def test_get(self): 
     # Checks the artists 
     # self.client attribute will be an APIClient instance 
     # Basically it will act as a client 
     response = self.client.get(url_1) 
     self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) 
     self.assertEqual(response.content, '') # There should be no data 
     # self.assertEqual(len(data), 0) 
     # print ("%s.%s DONE - 1" % (self.__class__.__name__, inspect.stack()[0][3])) 

    def test_post(self): 
     _data = {"name": "50 Cent", "birth_date":"2005-02-13"} 
     response = self.client.post(url_1, _data) 
     print "----" 
     print response.headers 
     data = json.loads(response.content)["data"] 
     self.assertEqual(response.status_code, status.HTTP_201_CREATED) 
     self.assertEqual(data, _data) 
     self.assertEqual(Artist.objects.count(), 1) 
     self.assertEqual(Artist.objects.get().name, '50 Cent') 

P. S.

Bitte beachten Sie, dass:

print response.headers # this throws an error 
print response # shows the header but I want it to be parsed 

Antwort

2

Es gibt mehrere Möglichkeiten:

>>> response.has_header('Location') 
True 

>>> response.get('Location') # None if key not in headers 
My location 

>>> response['Location'] # KeyError if key doesn't exist 
My location 

>>> response._headers # headers as dict 
{'allow': ('Allow', 'GET, POST, HEAD, OPTIONS'), 'Location': ...} 

>>> response.serialize_headers() # headers as bytestring (in Python 3) 
b'Allow: GET, POST, HEAD, OPTIONS\r\nLocation: ...' 
Verwandte Themen