2012-10-15 12 views
5

WebTestで問題が発生していることを理解しようとしている最後の2日間、Webを検索してきました。しかし、私は喜びを感じていませんでした。ここにいる人が助けてくれるかどうかは不思議でした。nosetestsとファイルアップロードの問題

開発中のWebアプリケーションでテストを実行するためにnoseを使用していますが、ファイルアップロードフィールドがあるフォームに問題があるようです。フォームと検証はサーバーが正常に動作しているときに動作し、シェルからテストコードを実行すると正常に動作します。しかし、私が鼻からテストコードを実行すると、送信された情報を受け入れることができません。ここで

は、フォームの例です:

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

私はこれを実行したときに私が得る応答は、サムネイルが提出された値から欠落しているということですフィールドバリデーターでフィールドが必要ではないと考えたとしても。私は鼻からのコード出力を比較し、シェルを介してそれを実行しているとき、私はsubmit_fieldsからの出力が異なる

シェル出力したことに気づいた場合:あなたのよう

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

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

鼻出力シェルにはサムネイルタプルがないという違いがありますが、問題なく通過する空文字列に設定されています。しかし、Noseにはすでにタプルがあり、値をリセットしません。誰もこれで私を助けることができますか? form.submitアプローチを使用しているときに、WebTestでマルチパートフォームを試す際に問題はありますか?

ご協力いただきありがとうございます。

ライブラリ情報: Pylonsの-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

はい、実際は元のバージョンにはログインしていませんでした。これを削除すると、私は現時点で得ている結果に何の影響も与えません。しかし時間をとってくれてありがとう。 –

関連する問題