· 6 years ago · Jun 29, 2019, 03:08 PM
1in _execute_for_all_tables op(bind=self.get_engine(app, bind), **extra)
2
3from flask import Flask
4from config import Config
5from blocker_application.database import db
6from flask_migrate import Migrate
7from flask_login import LoginManager
8from flask_moment import Moment
9
10migrate = Migrate()
11login = LoginManager()
12login.login_view = 'user.login'
13moment = Moment()
14
15
16def create_app(config_class=Config):
17 app = Flask(__name__)
18 app.config.from_object(config_class)
19
20 db.init_app(app)
21 migrate.init_app(app, db)
22 login.init_app(app)
23 moment.init_app(app)
24
25 from blocker_application.main.routes import bp_main
26 from blocker_application.errors.handlers import bp_error
27 from blocker_application.reports.routes import bp_reports
28 from blocker_application.user.routes import bp_user
29 from blocker_application.applications.routes import bp_applications
30 app.register_blueprint(bp_main)
31 app.register_blueprint(bp_error)
32 app.register_blueprint(bp_reports, url_prefix='/reports')
33 app.register_blueprint(bp_user, url_prefix='/user')
34 app.register_blueprint(bp_applications, url_prefix='/applications')
35
36
37 return app
38
39from blocker_application import models
40________________________________________________________________________
41
42/config.py
43
44import os
45
46basedir = os.path.abspath(os.path.dirname(__file__))
47
48
49class Config:
50 SECRET_KEY = os.environ.get('SECRET_KEY') or 'not realy finish secret key configuration'
51 SQLALCHEMY_DATABASE_URI = 'mysql://some_database'
52 SQLALCHEMY_TRACK_MODIFICATIONS = False
53
54class TestConfig(Config):
55 TESTING = True
56 SQLALCHEMY_BINDS = {'test': 'mysql://some_database_test'}
57______________________________________________________________________
58
59/tests.py
60
61import unittest
62from blocker_application import create_app, db
63from blocker_application import models
64from config import TestConfig
65
66
67class UserModelCase(unittest.TestCase):
68 def setUp(self):
69 self.app = create_app(TestConfig)
70 self.app_context = self.app.app_context()
71 self.app_context.push()
72 db.create_all(bind='test')
73
74 def tearDown(self):
75 db.session.remove()
76 db.drop_all(bind='test')
77 self.app_context.pop()
78
79 def test_password(self):
80 u = models.User(username='Mark')
81 u.set_password('Mark')
82 self.assertTrue(u.check_password('Mark'))
83 self.assertFalse(u.check_password('Tony'))
84
85if __name__ == '__main__':
86 unittest.main(verbosity=2)