2016-07-26 30 views
0

Ich teste eine Django App. Wenn sich der Benutzer anmeldet, leite ich ihn auf eine Diagrammseite um. Zum Test, schreibe ichDjango Redirect Status Code Fehler

response = TestCase.client.post('app/login', {credentials}, follow=True) 
TestCase.assertRedirects(response, 'app/graphs') 

die

AssertionError: False is not true : 
Response didn't redirect as expected: Response code was 200 (expected 302). 

vernünftig genug zurückkehrt. The docs sayassertRedirects hat einen status_code Parameter. Dann ruft

TestCase.assertRedirects(response, 'app/graphs', status_code=200) 

kehrt

AssertionError: False is not true : 
Response didn't redirect as expected: Response code was 200 (expected 200). 

Was ist los?

Antwort

2

Der Parameter status_code ist der Status der Weiterleitungsantwort. Dies sollte normalerweise 301 (permanente Umleitung) oder 302 (temporäre Umleitung) sein.

Es ist nicht sinnvoll, status_code=200 zu verwenden, da 200 keine Weiterleitungsantwort ist.

Ich stimme zu, dass Antwortcode 200 war (erwartet 200). sieht ein wenig verwirrend aus, aber der Schlüssel des Assertionsfehlers ist Antwort wurde nicht wie erwartet umgeleitet.

Da die Assertion Ihnen sagt, dass Sie nicht umgeleitet werden, deutet dies darauf hin, dass Ihr Beitrag zum Anmelden nicht funktioniert. Sie könnten versuchen, response.content zu untersuchen, um zu sehen, was das Problem ist. Beachten Sie, dass Ihre URLs mit einem Schrägstrich (d. H. /app/login und /app/graphs) beginnen sollten.

+0

Ich verwende 'window.location.href' im clientseitigen Code umzuleiten und möchte sicherstellen, dass ich auf der richtigen Seite lande. Wie kann ich diese Funktionalität testen? –

+0

Sie können den Django-Testclient verwenden, um zu überprüfen, ob "response.content" den korrekten Wert von "window.location.href" enthält. Wenn Sie jedoch das Browserverhalten testen möchten, sollten Sie etwas wie Selenium verwenden. Unter [docs] (https://docs.djangoproject.com/en/1.9/topics/testing/tools/#the-test-client) finden Sie weitere Erläuterungen. – Alasdair