2012-10-15 26 views
5

我在過去兩天一直在搜尋網絡,試圖瞭解WebTest遇到的問題。然而,我並沒有喜樂,並想知道這裏有沒有人可以幫忙。鼻子測試和文件上傳問題

我正在使用鼻子在我開發的web應用程序上運行測試,但似乎遇到了具有文件上載字段的窗體的問題。表單和驗證在服務器運行正常時運行,如果我從shell運行測試代碼,它也可以運行。但是,每當我從鼻子運行測試代碼時,它都不能接受提交的信息。

這是形式的一個例子:

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

我WebTest的代碼如下所示:

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

的響應,我得到當我運行這是一個縮略圖從提交的數據丟失,甚至認爲該字段不是表單驗證器所要求的。當我比較了鼻子輸出的代碼,並通過shell中運行時,我注意到,從submit_fields輸出爲不同

殼牌輸出:

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

鼻子輸出:

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

正如你可以看到shell中沒有縮略圖元組,但將其設置爲空白字符串,該字符串沒有問題地通過。但是,在鼻子裏已經有一個元組,它不會重置值。誰能幫我這個?使用form.submit方法時,在WebTest中嘗試多部分表單時是否存在問題?

在此先感謝您的幫助。

圖書館信息: 塔-1.0.1 WebTest的-1.4.0 的WebOb-1.2.3 鼻1.2.1

+0

您是否嘗試過使用form.set('thumbnail','',index = 0)? –

+0

感謝@pi爲您的評論,但是,從我的理解索引值只需要如果他們是在窗體上具有相同名稱的多個字段。我試着只是爲了安全起見,但它沒有做任何不同的事情。顯然,我在這裏錯過了其他的東西。 –

+1

你嘗試過form.set('thumbnail',None)嗎? – alecxe

回答

1

您是否嘗試過在log.debug(form.submit_fields())去除log.debug?

鼻子有時被稱爲奇怪地與日誌交互,因爲它會對輸出進行一些內部重定向。

+0

是的,實際上原來的版本沒有登錄。所以刪除這個對我現在得到的結果沒有任何影響。感謝您抽出時間。 –