15

Flask で upload() メソッドをテストしようとしています。唯一の問題は、Flask のFileStorageオブジェクトには、python Fileオブジェクトにはないメソッド save() があることです。

次のようにファイルを作成します。

file = open('documents-test/test.pdf')

しかし、そのメソッドは save() を使用するため、upload() メソッドをテストできません。

この File オブジェクトを Flask Filestorage オブジェクトに変換する方法はありますか?

4

3 に答える 3

24

http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.FileStorage

テスト フレームワークとアプリケーション自体の外部にあるユーティリティとしてフラスコFileStorageオブジェクトを使用する必要がありました。基本的には、フォームを使用してファイルをアップロードする方法を再現する必要がありました。これは私にとってはうまくいきました。

from werkzeug.datastructures import FileStorage
file = None
with open('document-test/test.pdf', 'rb') as fp:
    file = FileStorage(fp)
file.save('document-test/test_new.pdf')
于 2014-12-16T17:40:15.980 に答える
3

Flask テスト クライアントのgetandメソッドは内部で呼び出されます。そのため、ファイルのキーワード引数として辞書を渡すと、次のように操作できるようになります。postwerkzeug.test.EnvironBuilderdata

def test_upload():
    with open("document-test/test.pdf", "rb") as your_file:
        self.app.post("/upload", data={"expected_file_key": your_file})
        # Your test here
于 2013-08-16T04:21:23.943 に答える