6

私は過去2日間、WebTestで発生している問題を理解しようとしてWebを検索してきました。しかし、私には喜びがなく、ここの誰かが助けてくれるのではないかと思っていました。

開発中の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()

これを実行すると、フォームバリデーターでフィールドが必須ではないにもかかわらず、送信された値からサムネイルが欠落しているという応答が返されます。Noseからのコード出力を比較し、シェルを介して実行すると、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

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

よろしくお願いします。

ライブラリ情報:Pylons-1.0.1 WebTest-1.4.0 WebOb-1.2.3 nose-1.2.1

4

1 に答える 1

2

の log.debug を削除しようとしましたlog.debug( form.submit_fields() )か?

Nose は、出力の内部リダイレクトを行うため、ロギングと奇妙な相互作用をすることが知られています。

于 2012-12-22T17:58:03.803 に答える