2017-02-09 4 views
0

Ich möchte testen, ein benutzerdefiniertes Dokument Dateiformular in meiner Anwendung im Admin-Bereich hinzufügen. Leider ist die Django-Dokumentation ziemlich unklar.Test Django Admin Formular

Das ist mein Modell:

class Document(models.Model): 
    pub_date = models.DateTimeField('date published') 
    title = models.CharField(max_length=255) 
    description = models.TextField() 
    pdf_doc = models.FileField(upload_to=repo_dir, max_length=255) 

Dies ist mein Test:

from django.test import TestCase 
from django.test import Client 
from django.utils import timezone 
from datetime import datetime, timedelta 

class DocumentAdminFormTest(TestCase): 

    def test_add_document_form(self): 
     client = Client() 
     change_url = 'admin/docrepo/document/add/' 
     today = datetime.today() 
     filepath = u'/filepath/to/some/pdf/' 
     data = {'title': 'TEST TITLE', 
       'description': 'TEST DESCRIPTION', 
       'pub_date0': '2000-01-01', 
       'pub_date1': '00:00:00', 
       'pdf_doc': filepath, 
       } 
     response = client.post(change_url, data) 
     print('REASON PHRASE: ' + response.reason_phrase) 
     self.assertIs(response.status_code, 200) 

Ich mag würde 200 Antwort zu erhalten, während das Formular mit gezeigten Daten veröffentlichen. Aus irgendeinem Grund gibt response.status_code 404 und response.reason_phrase gibt "Not Found". Ist es möglich, dass das Problem im Verzeichnis liegt?

+1

Normalerweise beginnt die URL mit einem Schrägstrich. –

+0

Ok, das hat mich ein bisschen weiter getrieben ... jetzt gibt response.status_code 304 zurück und response.reason_phrase gibt 'Found'. Ist es möglich, dass es wegen fehlenden Anmeldeschritts ist? – asdfgh

Antwort

0

Sie müssen log the client in:

c = Client() 
c.login(username='your_username', password='your_password') 
response = c.post(change_url, data) 

die korrekteste Weg change_url definieren reverse() verwendet. Sie können browse the docs finden, um den richtigen Weg zu finden. Zum Beispiel:

change_url = reverse('admin:docrepo_document_add') 
Verwandte Themen