Skip to content

Instantly share code, notes, and snippets.

@DazWorrall
Created February 9, 2012 13:06
Show Gist options
  • Star 84 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save DazWorrall/1779861 to your computer and use it in GitHub Desktop.
Save DazWorrall/1779861 to your computer and use it in GitHub Desktop.
Testing file upload handling in Flask
#!/usr/bin/env python
from flask import Flask, Request, request
from StringIO import StringIO
import unittest
RESULT = False
class TestFileFail(unittest.TestCase):
def test_1(self):
class FileObj(StringIO):
def close(self):
print 'in file close'
global RESULT
RESULT = True
class MyRequest(Request):
def _get_file_stream(*args, **kwargs):
return FileObj()
app = Flask(__name__)
app.debug = True
app.request_class = MyRequest
@app.route("/upload", methods=['POST'])
def upload():
f = request.files['file']
print 'in upload handler'
self.assertIsInstance(
f.stream,
FileObj,
)
# Note I've monkeypatched werkzeug.datastructures.FileStorage
# so it wont squash exceptions
f.close()
#f.stream.close()
return 'ok'
client = app.test_client()
resp = client.post(
'/upload',
data = {
'file': (StringIO('my file contents'), 'hello world.txt'),
}
)
self.assertEqual(
'ok',
resp.data,
)
global RESULT
self.assertTrue(RESULT)
def test_2(self):
pass
if __name__ == '__main__':
unittest.main()
in upload handler
in file close
..
----------------------------------------------------------------------
Ran 2 tests in 0.021s
OK
@ifeLawal
Copy link

This saved the queen (latifah)

@judeapana
Copy link

This saved Jonah from the whale.

@vsonpa6
Copy link

vsonpa6 commented Nov 25, 2021

This saved my dream

@b-dont
Copy link

b-dont commented Mar 13, 2024

This saved.

@destroy-data
Copy link

This saved my hamster.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment