2012-12-04 14 views
5

WebTestを使用して画像のアップロードをテストする方法を知っている人はいますか?私の現在のコードは次のとおりです。DjangoとWebtestによる画像のアップロード

form['avatar'] =('avatar', os.path.join(settings.PROJECT_PATH, 'static', 'img', 'avatar.png')) 
res = form.submit() 

私は次のエラーが取得応答では、「有効な画像をアップロードしてアップロードしたファイルは、画像または破損した画像のいずれかではなかったです。。」。

ご協力いただければ幸いです。

+0

私は、ファイルのオブジェクトを渡す必要がありますね。 – power

+0

いいえ、ファイルオブジェクトが渡された場合、WebTestから "ValueError:File content is not "が返されます。 –

+2

image_file.read()を渡すとどうなりますか? – power

答えて

6

電源が正しくありました。残念なことに(またはそうではない)ウェブテストをデバッグするのに30分を費やした後、私は彼の答えを見つけました。もう少し情報があります。

ファイルへのパスのみを渡そうとすると、あなたに次の例外をもたらします:

webtest/app.py", line 1028, in _get_file_info

ValueError: upload_files need to be a list of tuples of (fieldname, filename, filecontent) or (fieldname, filename); you gave: ...

問題は、それが自動的にタプル送信と作ることにフィールド名を追加することを言っていないされています3項目タプルを4項目1にします。最終溶液は:

avatar = ('avatar', 
      file(os.path.join(settings.PROJECT_PATH, '....', 'avatar.png')).read()) 

まともな例が存在しないことを残念私はこれはあまりにも他の誰を助けることを願っています)

1

今日で選択答えは私を助けていませんでした。

しかし、私は.submitで予想されるファイルを提供する方法を発見した()メソッドの引数

form.submit(upload_files=[('avatar', '/../file_path.png')) 
関連する問題