2012-10-15 9 views
5

Przez ostatnie dwa dni szukałem w Internecie, próbując zrozumieć problem, który mam z WebTestem. Jednak nie miałem żadnej radości i zastanawiałem się, czy ktoś tu może pomóc.Problem z badaniami w nosie i przesyłaniem plików

Używam nosa do testowania aplikacji internetowej, którą właśnie rozwijam, ale wydaje mi się, że mam problem z formularzem, który zawiera pole do przesyłania plików. Formularz i sprawdzanie poprawności działa na serwerze, gdy działa normalnie, a jeśli uruchomię kod testowy z powłoki, działa on również. Jednak zawsze, gdy uruchamiam kod testowy z nosa, nie akceptuję przesłanych informacji.

Oto przykład w postaci:

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

Moja WebTest kod wygląda następująco:

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() 

Odpowiedź dostaję gdy uruchamiam to, że miniatur brakuje przedstawionych wartościach , nawet myśl, że pole nie jest wymagane przez walidator formularza. Kiedy porównano wyjście kodu od nosa, a po uruchomieniu go przez powłoki Zauważyłem, że wyjście z submit_fields różnił

Shell wyjściowa:

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

Nos wyjściowa:

[(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 

jak ty widać różnicę w powłoce nie ma miniaturki krotki, ale ustawia ją na pusty ciąg, który przechodzi bez problemu. Jednak w Nosie jest tam już krotka i nie resetuje ona wartości. Czy ktoś może mi w tym pomóc? Czy istnieje problem z wypróbowaniem wieloczęściowych formularzy w WebTestu podczas korzystania z metody form.submit?

Z góry dziękuję za pomoc.

Biblioteka Informacja: Pylony-1.0.1 WebTest-1.4.0 WebOb-1.2.3 nos-1.2.1

+0

Czy próbowałeś użyć formularza.set ('thumbnail', '', index = 0)? –

+0

Dzięki @pi dla twojego komentarza, jednak z mojego zrozumienia wartość indeksu jest potrzebna tylko wtedy, gdy są to pola o tej samej nazwie w formularzu. Próbowałem go po prostu na bezpieczną stronę, ale nie robił nic innego. Jest oczywiście coś, czego mi tutaj brakuje. –

+1

Czy próbowałeś już formularza.set ("thumbnail", Brak)? – alecxe

Odpowiedz

1

Czy próbowałeś usunięcie log.debug w log.debug(form.submit_fields())?

Nos był czasami dziwnie oddziałuje z logowaniem, ponieważ wykonuje wewnętrzne przekierowanie wyjść.

+0

Tak, faktycznie oryginalna wersja nie miała loginu. Usunięcie tego nie będzie miało żadnego wpływu na wyniki, które otrzymuję w tej chwili. Dzięki za poświęcenie czasu. –

Powiązane problemy