2012-12-04 14 views
5

Weiß jemand, wie ich das Bild hochladen mit WebTest testen kann. Mein aktueller Code ist:Testen Bild hochladen mit Django und Webtest

form['avatar'] =('avatar', os.path.join(settings.PROJECT_PATH, 'static', 'img', 'avatar.png')) 
res = form.submit() 

In der Antwort, die ich die folgende Fehlermeldung erhalten „Upload ein gültiges Bildes Die Datei wurde hochgeladen entweder kein Bild oder ein beschädigtes Bild..“.

Jede Hilfe wird geschätzt.

+0

zu schaffen Ich denke, man sollte Objektdatei übergeben. – power

+0

Nein, wenn das Dateiobjekt übergeben wurde webtest gibt "ValueError zurück: Dateiinhalt muss nicht sein" –

+2

Was passiert, wenn Sie image_file.read() übergeben? – power

Antwort

6

Leistung war richtig. Leider (oder nicht) fand ich seine Antwort, nachdem ich eine halbe Stunde lang den Webtest getestet hatte. Hier ist ein bisschen mehr Informationen.

nur den Pfad zu den Dateien passieren Versuch bringt Ihnen die folgende Ausnahme:

webtest/app.py", line 1028, in _get_file_info

ValueError: upload_files need to be a list of tuples of (fieldname, filename, filecontent) or (fieldname, filename); you gave: ...

Das Problem ist, dass es Ihnen nicht gesagt, dass es automatisch den Feldnamen auf das Tupel Sende anhängen wird und machen 3 Stück Tupel in 4 Stück eins. Die endgültigen Lösungen war:

avatar = ('avatar', 
      file(os.path.join(settings.PROJECT_PATH, '....', 'avatar.png')).read()) 

Schade, dass es nicht anständig Beispiel ist, aber ich hoffe, dass dies jemand anders helfen)

1

Heute gewählte Antwort nicht mir geholfen hat.

Aber ich fand den Weg erwartete Dateien in der .submit() Methode args

form.submit(upload_files=[('avatar', '/../file_path.png'))