The Flask Docs have a great section for testing. However they assume that you have the app installed with
pip install -e . which I almost never do. (Maybe I should start?)
I have had trouble with this approach. So one little hack to inject your app into the searchable python path is to do something like this:
export BLOG_PATH=$(pwd) && python tests/blog_tests.py
We use $(pwd) so that this will “just work” no matter which computer you run it on (i.e. test, dev, other persons dev)
Then in your
tests/blog_tests.py file you import your flask app like this:
sys.path.insert(0, os.environ.get('BLOG_PATH')) from blog.blog import app, init_db
You can see the full details here: https://circleci.com/gh/levlaz/blog
My biggest issue with installing the app in a traditional sense is that when I run it with apache mod_wsgi it does not seem to actually copy over the right folders and apache is not able to find templates or static files.
So that sucks, and I am probably doing something wrong. But this approach works more or less no matter what so sometimes a hack is better than derping around with no solution (as I did for six hours yesterday).
If you made it this far, you should probably follow me on twitter. 🙂 Follow @levlaz