Initial commit
This commit is contained in:
commit
2677021a05
122
.gitignore
vendored
Normal file
122
.gitignore
vendored
Normal file
|
@ -0,0 +1,122 @@
|
|||
.idea/
|
||||
*.pyc
|
||||
py3/
|
||||
data/
|
||||
build/
|
||||
dist/
|
||||
.pytest_cache/
|
||||
.vscode/
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
*.pkl
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# celery beat schedule file
|
||||
celerybeat-schedule
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.idea
|
||||
|
||||
*.pptx
|
||||
|
||||
misc/
|
||||
.Rproj.user
|
||||
|
||||
fte/app-test.db
|
7
README.md
Normal file
7
README.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# flask_testing_examples
|
||||
|
||||
A collection of examples for testing Flask applications
|
||||
|
||||
## Running the tests
|
||||
|
||||
All tests in this repository can be run by installing PyTest with `pip install pytest` and invoking the command `pytest`
|
17
app/__init__.py
Normal file
17
app/__init__.py
Normal file
|
@ -0,0 +1,17 @@
|
|||
from flask import Flask, jsonify
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
|
||||
db = SQLAlchemy()
|
||||
|
||||
|
||||
def create_app(env=None):
|
||||
from fte.config import config_by_name
|
||||
app = Flask(__name__)
|
||||
app.config.from_object(config_by_name[env or 'test'])
|
||||
|
||||
db.init_app(app)
|
||||
|
||||
@app.route('/health')
|
||||
def health():
|
||||
return jsonify('healthy')
|
||||
return app
|
14
app/__init__test.py
Normal file
14
app/__init__test.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
from fte.test.fixtures import app, client # noqa
|
||||
|
||||
|
||||
def test_app_creates(app): # noqa
|
||||
assert app
|
||||
|
||||
|
||||
def test_app_healthy(app, client): # noqa
|
||||
#with app.app_context():
|
||||
with client:
|
||||
resp = client.get('/health')
|
||||
assert resp.status_code == 200
|
||||
assert resp.is_json
|
||||
assert resp.json == 'healthy'
|
0
app/client/__init__.py
Normal file
0
app/client/__init__.py
Normal file
16
app/client/requests_test.py
Normal file
16
app/client/requests_test.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
from fte import create_app
|
||||
from fte.decorators import accepts
|
||||
|
||||
from fte.test.fixtures import app, client # noqa
|
||||
|
||||
|
||||
def test_reqparse(app):
|
||||
@app.route('/hello_world')
|
||||
def respond():
|
||||
from flask import jsonify
|
||||
return jsonify('Hello, World')
|
||||
with app.test_client() as cl:
|
||||
response = cl.get('/hello_world')
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json == 'Hello, World'
|
37
app/config.py
Normal file
37
app/config.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
import os
|
||||
|
||||
basedir = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
|
||||
class BaseConfig:
|
||||
USE_MOCK_EQUIVALENCY = False
|
||||
DEBUG = False
|
||||
|
||||
|
||||
class DevelopmentConfig(BaseConfig):
|
||||
CONFIG_NAME = 'dev'
|
||||
SECRET_KEY = os.getenv(
|
||||
"DEV_SECRET_KEY", "You can't see California without Marlon Brando's eyes")
|
||||
DEBUG = True
|
||||
TESTING = False
|
||||
SQLALCHEMY_DATABASE_URI = "sqlite:///{0}/app-dev.db".format(basedir)
|
||||
|
||||
|
||||
class TestingConfig(BaseConfig):
|
||||
CONFIG_NAME = 'test'
|
||||
SECRET_KEY = os.getenv("TEST_SECRET_KEY", "Thanos did nothing wrong")
|
||||
DEBUG = True
|
||||
TESTING = True
|
||||
SQLALCHEMY_DATABASE_URI = "sqlite:///{0}/app-test.db".format(basedir)
|
||||
|
||||
|
||||
class ProductionConfig(BaseConfig):
|
||||
CONFIG_NAME = 'prod'
|
||||
SECRET_KEY = os.getenv("PROD_SECRET_KEY", "I'm Ron Burgundy?")
|
||||
DEBUG = False
|
||||
TESTING = False
|
||||
SQLALCHEMY_DATABASE_URI = "sqlite:///{0}/app-prod.db".format(basedir)
|
||||
|
||||
|
||||
EXPORT_CONFIGS = [DevelopmentConfig, TestingConfig, ProductionConfig]
|
||||
config_by_name = {cfg.CONFIG_NAME: cfg for cfg in EXPORT_CONFIGS}
|
0
app/test/__init__.py
Normal file
0
app/test/__init__.py
Normal file
23
app/test/fixtures.py
Normal file
23
app/test/fixtures.py
Normal file
|
@ -0,0 +1,23 @@
|
|||
import pytest
|
||||
|
||||
from fte import create_app
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def app():
|
||||
return create_app('test')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def client(app):
|
||||
return app.test_client()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def db(app):
|
||||
from fte import db
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
yield db
|
||||
db.drop_all()
|
||||
db.session.commit()
|
Loading…
Reference in New Issue
Block a user