Flask Web Development P75~85 Summary 4

Flask
スポンサーリンク

テストについて

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 のちがいは?|teratail
current_appの説明がしっくりと理解できません。flaskでORMを書いていますが、調べながら見よう見まねで動かしつつ、flask-migrateを実行してmigrationファイルができるという状況です。しかし、ちゃんと理解できていません。とりわけ、current_appについて理解できて

つづく…

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作品ほか、お急ぎ便対象商品は当日お届けも可能。

前回の記事はこちら

タイトルとURLをコピーしました