2012-12-04 14 views
5

Qualcuno sa come posso testare il caricamento dell'immagine con l'uso di WebTest. Il mio codice attuale è:Test di caricamento dell'immagine con Django e Webtest

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

In risposta ottengo il seguente errore "Carica un'immagine valida Il file che hai caricato era o non un'immagine o un immagine corrotta..".

Qualsiasi aiuto sarà apprezzato.

+0

Credo che si dovrebbe passare oggetto del file. – power

+0

No, se viene passato l'oggetto file webtest restituisce "ValoreErrore: il contenuto del file deve essere non " –

+2

Cosa succede se si passa a image_file.read()? – power

risposta

6

Il potere era giusto. Sfortunatamente (o meno) ho trovato la sua risposta dopo aver passato mezz'ora a debugare il webtest. Ecco un po 'più di informazioni.

Cercando di passare solo il percorso dei file che si porta la seguente eccezione:

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: ...

Il problema è che è non ti ha detto che automaticamente aggiungerà il nome del campo per la tupla di invio e fare 3 voci in tuple in 4 item one. Le soluzioni finali era:

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

Peccato che non c'è esempio decente, ma spero che questo aiuterà chiunque altro troppo)

1

risposta Oggi selezionati non mi ha aiutato.

Ma ho trovato il modo per fornire i file attesi nel metodo .submit() args

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