Browse Source

Add in a fixture utilizing app factory

pull/2228/head
Kyle Lawlor 8 years ago
parent
commit
54b6fc8de6
  1. 8
      examples/flaskr/README
  2. 12
      examples/flaskr/flaskr/_cliapp.py
  3. 12
      examples/flaskr/flaskr/factory.py
  4. 2
      examples/flaskr/setup.cfg
  5. 11
      examples/flaskr/setup.py
  6. 49
      examples/flaskr/tests/test_flaskr.py

8
examples/flaskr/README

@ -9,9 +9,11 @@
~ How do I use it? ~ How do I use it?
1. edit the configuration in the flaskr.py file or 1. edit the configuration in the factory.py file or
export an FLASKR_SETTINGS environment variable export an FLASKR_SETTINGS environment variable
pointing to a configuration file. pointing to a configuration file or pass in a
dictionary with config values using the create_app
function.
2. install the app from the root of the project directory 2. install the app from the root of the project directory
@ -19,7 +21,7 @@
3. Instruct flask to use the right application 3. Instruct flask to use the right application
export FLASK_APP=flaskr export FLASK_APP=flaskr._cliapp
4. initialize the database with this command: 4. initialize the database with this command:

12
examples/flaskr/flaskr/_cliapp.py

@ -1,3 +1,15 @@
# -*- coding: utf-8 -*-
"""
Flaskr
~~~~~~
A microblog example application written as Flask tutorial with
Flask and sqlite3.
:copyright: (c) 2015 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
from flaskr.factory import create_app from flaskr.factory import create_app
app = create_app() app = create_app()

12
examples/flaskr/flaskr/factory.py

@ -1,3 +1,15 @@
# -*- coding: utf-8 -*-
"""
Flaskr
~~~~~~
A microblog example application written as Flask tutorial with
Flask and sqlite3.
:copyright: (c) 2015 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
import os import os
from flask import Flask, g from flask import Flask, g
from werkzeug.utils import find_modules, import_string from werkzeug.utils import find_modules, import_string

2
examples/flaskr/setup.cfg

@ -1,2 +1,2 @@
[tool:pytest] [aliases]
test=pytest test=pytest

11
examples/flaskr/setup.py

@ -1,3 +1,14 @@
# -*- coding: utf-8 -*-
"""
Flaskr Tests
~~~~~~~~~~~~
Tests the Flaskr application.
:copyright: (c) 2015 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
from setuptools import setup, find_packages from setuptools import setup, find_packages
setup( setup(

49
examples/flaskr/tests/test_flaskr.py

@ -16,20 +16,31 @@ from flaskr.factory import create_app
from flaskr.blueprints.flaskr import init_db from flaskr.blueprints.flaskr import init_db
test_app = create_app() @pytest.fixture
def app(request):
db_fd, temp_db_location = tempfile.mkstemp()
config = {
'DATABASE': temp_db_location,
'TESTING': True,
'DB_FD': db_fd
}
@pytest.fixture app = create_app(config=config)
def client(request):
db_fd, test_app.config['DATABASE'] = tempfile.mkstemp() with app.app_context():
test_app.config['TESTING'] = True
client = test_app.test_client()
with test_app.app_context():
init_db() init_db()
yield app
@pytest.fixture
def client(request, app):
client = app.test_client()
def teardown(): def teardown():
os.close(db_fd) os.close(app.config['DB_FD'])
os.unlink(test_app.config['DATABASE']) os.unlink(app.config['DATABASE'])
request.addfinalizer(teardown) request.addfinalizer(teardown)
return client return client
@ -52,25 +63,25 @@ def test_empty_db(client):
assert b'No entries here so far' in rv.data assert b'No entries here so far' in rv.data
def test_login_logout(client): def test_login_logout(client, app):
"""Make sure login and logout works""" """Make sure login and logout works"""
rv = login(client, test_app.config['USERNAME'], rv = login(client, app.config['USERNAME'],
test_app.config['PASSWORD']) app.config['PASSWORD'])
assert b'You were logged in' in rv.data assert b'You were logged in' in rv.data
rv = logout(client) rv = logout(client)
assert b'You were logged out' in rv.data assert b'You were logged out' in rv.data
rv = login(client,test_app.config['USERNAME'] + 'x', rv = login(client,app.config['USERNAME'] + 'x',
test_app.config['PASSWORD']) app.config['PASSWORD'])
assert b'Invalid username' in rv.data assert b'Invalid username' in rv.data
rv = login(client, test_app.config['USERNAME'], rv = login(client, app.config['USERNAME'],
test_app.config['PASSWORD'] + 'x') app.config['PASSWORD'] + 'x')
assert b'Invalid password' in rv.data assert b'Invalid password' in rv.data
def test_messages(client): def test_messages(client, app):
"""Test that messages work""" """Test that messages work"""
login(client, test_app.config['USERNAME'], login(client, app.config['USERNAME'],
test_app.config['PASSWORD']) app.config['PASSWORD'])
rv = client.post('/add', data=dict( rv = client.post('/add', data=dict(
title='<Hello>', title='<Hello>',
text='<strong>HTML</strong> allowed here' text='<strong>HTML</strong> allowed here'

Loading…
Cancel
Save