2012-10-15 19 views
5

Ho cercato sul Web negli ultimi due giorni cercando di capire il problema riscontrato con WebTest. Tuttavia, non ho avuto gioia, e mi chiedevo se qualcuno qui potrebbe essere in grado di aiutare.Problema con nosetests e upload di file

Utilizzo nose per eseguire test su un'applicazione Web che sto sviluppando ma sembra che abbia problemi con un modulo che contiene un campo di caricamento file. La forma e la validazione funzionano sul server quando è in esecuzione normalmente, e se eseguo il codice di test da una shell funziona altrettanto bene. Tuttavia, ogni volta che eseguo il codice di test dal naso non riesce ad accettare le informazioni inviate.

Ecco un esempio della forma:

<form method="POST" enctype="multipart/form-data" action="...."> 
    <input type="text" name="first_name" id="first_name"> 
    <input type="text" name="last_name" id="last_name"> 
    <input type="file" name="thumbnail" id="thumbnail"> 
    <input type="submit" value="Create" name="submit" id="submit"> 
</form> 

Il mio codice WebTest si presenta così:

response = self.app.get(url(controller=self.controller, action='create')) 
form = response.form              

log.debug(form.submit_fields())           

form.set('first_name', 'test1-1')           
form.set('last_name', 'test1-1')            
form.set('thumbnail', '')             

log.debug(form.submit_fields())           
response = form.submit() 

La risposta che provo quando corro questo è che miniatura manca dai valori inviati , anche pensato che il campo non è richiesto dal validatore di moduli. Quando ho confrontato l'uscita del codice dal naso e quando si esegue attraverso una shell ho notato che l'uscita dal submit_fields era diversa uscita

Shell:

[('first_name', ''),('last_name', '')] #First log call 
[('first_name', 'test1-1'),('last_name', 'test1-1'), ('thumbnail', '')] #Second log call 

Naso uscita:

[(u'first_name', ''), (u'last_name', ''), (u'thumbnail', <File name="thumbnail" id="thumbnail">)] #First log call 
[(u'first_name', 'test1-1'), (u'last_name', 'test1-1'),(u'thumbnail', <File name="thumbnail" id="thumbnail">)] #Second log call 

Come si può vedere che c'è una differenza nella shell non ha la tupla della miniatura, ma la imposta su una stringa vuota che passa senza problemi. Tuttavia, in Naso c'è già una tupla e non ripristina il valore. Qualcuno mi può aiutare con questo? C'è un problema con il provare i moduli multipart in WebTest quando si utilizza l'approccio form.submit?

Grazie in anticipo per il vostro aiuto.

Biblioteca Informazioni: Piloni-1.0.1 WebTest-1.4.0 WebOb-1.2.3 naso-1.2.1

+0

Hai provato a utilizzare form.set ('thumbnail', '', index = 0)? –

+0

Grazie a @pi per il tuo commento, tuttavia, dal mio punto di vista il valore dell'indice è necessario solo se sono più campi con lo stesso nome nel modulo. L'ho provato solo per essere al sicuro, ma non ha fatto nulla di diverso. C'è ovviamente qualcos'altro che mi manca qui. –

+1

Hai provato a form.set ('thumbnail', None)? – alecxe

risposta

1

Avete provato a rimuovere il log.debug in log.debug(form.submit_fields())?

Talvolta è noto che il naso interagisce in modo strano con la registrazione poiché esegue alcuni reindirizzamenti interni delle uscite.

+0

Sì, in realtà la versione originale non aveva il login. Quindi rimuoverlo non avrà alcun effetto sui risultati che sto ottenendo al momento. Grazie per il tempo però. –