Running Flask Tests without installing the app

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. 🙂

This entry was posted in Hacking and tagged , . Bookmark the permalink.

3 Responses to Running Flask Tests without installing the app

  1. Pingback: Injecting Stuff into your Python Path | levlaz

  2. Nice tip. What are you using Flask for nowadays?

Leave a Reply

Your email address will not be published. Required fields are marked *