テストについて
pythonには標準で、pylist、pyflakes、pycodestyleなどのコードチェッカーがありますが、ここではコードの動きのテストを行います。
また、Flask Web Developmentではpython標準のunittestを行っていますが、最新のflaskの公式ページを見るとpytestを使っているので、そちらに従いましょう。
テストを行うコードはこんな感じ。(※あくまでイメージです)
import unittest
from flask import current_app
from app import create_app, db
class BasicsTestCase(unittest.TestCase):
def setUp(self):
self.app = create_app('testing')
self.app_context = self.app.app_context()
self.app_context.push()
db.create_all()
def tearDown(self):
db.session.remove()
db.drop_all()
self.app_context.pop()
def test_app_exists(self):
self.assertFalse(current_app is None)
def test_app_is_testing(self):
self.assertTrue(current_app.config['TESTING'])
同フォルダに空のinit.pyファイルも置いておきます。
テストをする時はターミナルで
> pytest
と打つだけです。そうするとtest_XXXXX.pyとinitが入っているフォルダtestsを自動で認識してtest_XXXX.pyのプログラムを実行します。
ここで一点…anaconda3でpytestを行うと、以下の様な警告文(Warningだよ。Errorじゃないよ。)が出てきます。
================================================== warnings summary ===================================================
..\..\..\..\..\anaconda3\lib\site-packages\pyreadline\py3k_compat.py:8
C:\Users\XXXX.XXXXX\anaconda3\lib\site-packages\pyreadline\py3k_compat.py:8: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working
return isinstance(x, collections.Callable)
-- Docs: https://docs.pytest.org/en/stable/warnings.html
んで、ここに書かれている通り、anaconda3の中にあるpy3k_compat.pyの
return isinstance(x, collections.Callable)を
return isinstance(x, collections.abc.Callable)
と変更すると警告文がなくなります。
current_app、create_appなどのApplication contextについてはこちらのページを一度読んでおきましょう。
アプリケーションのコンテキスト(The Application Context) — Flask Documentation (2.0.x)

current_app vs app のちがいは?
current_appの説明がしっくりと理解できません。
flaskでORMを書いていますが、調べながら見よう見まねで動かしつつ、flask-migrateを実行してmigrationファイルができ
つづく…
Amazon | Flask Web Development: Developing Web Applications with Python | Grinberg, Miguel | Software Development
Amazon配送商品ならFlask Web Development: Developing Web Applications with Pythonが通常配送無料。更にAmazonならポイント還元本が多数。Grinberg, Miguel作品ほか、お急ぎ便対象商品は当日お届けも可能。
前回の記事はこちら