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
Hai provato a utilizzare form.set ('thumbnail', '', index = 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. –
Hai provato a form.set ('thumbnail', None)? – alecxe