forked from orbit-oss/flask
Add in a fixture utilizing app factory
This commit is contained in:
parent
8cf32bca51
commit
54b6fc8de6
6 changed files with 72 additions and 24 deletions
|
|
@ -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:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
[tool:pytest]
|
[aliases]
|
||||||
test=pytest
|
test=pytest
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
||||||
|
app = create_app(config=config)
|
||||||
|
|
||||||
|
with app.app_context():
|
||||||
|
init_db()
|
||||||
|
yield app
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def client(request):
|
def client(request, app):
|
||||||
db_fd, test_app.config['DATABASE'] = tempfile.mkstemp()
|
|
||||||
test_app.config['TESTING'] = True
|
client = app.test_client()
|
||||||
client = test_app.test_client()
|
|
||||||
with test_app.app_context():
|
|
||||||
init_db()
|
|
||||||
|
|
||||||
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…
Add table
Add a link
Reference in a new issue