Ich habe einen seltsamen Fehler beim Schreiben eines APITestCase für eine Django-REST-Ansicht.Django REST-Test ignoriert Factory-URL
Dies ist mein Code:
class CreateUserTest(APITestCase):
def setup(self):
self.superuser = User.objects.create_superuser('[email protected]', '1989-10-06', 'vishnupassword')
self.client.login(username='vishnu', password='vishnupassword')
self.data = a bunch of trivial data
def test_can_create_user(self):
print "create user"
self.setup()
self.token = Token.objects.get(user_id=self.superuser.id)
self.api_key = settings.API_KEY
self.factory = APIRequestFactory()
self.request = self.factory.post('/api/v1/uaaaaaasers/?api_key=%s' % self.api_key,
self.data,
HTTP_AUTHORIZATION='Token {}'.format(self.token))
force_authenticate(self.request, user=self.superuser)
self.view = UserList.as_view()
self.response = self.view(self.request)
self.response.render()
#print self.response.content
self.assertEqual(self.response.status_code, status.HTTP_201_CREATED)
Wie Sie sehe ich factory.post auf eine absichtlich falsche URL run/api/v1/uaaaaaasers/
Aber der Test tut beschweren:
Creating test database for alias 'default'...
create user .
----------------------------------------------------------------------
Ran 1 test in 0.199s
OK Destroying test database for alias 'default'...
Sollte es nicht mit dieser falschen URL abstürzen? Woher weiß ich, dass der Test gut läuft?
Wo bekommen Sie in Ihrem Beispiel die self.response? – lapinkoira
@lapinkoira aktualisiert oben:) ... das Problem in Ihrem obigen Code ist nur, dass Django die URL nicht auf die Ansicht zuordnet ... Sie rufen die Ansicht manuell aufrufen :) –