Flask — ошибка утверждения, вызывающая ошибку

#python #flask #python-unittest

#python #flask #python-unittest

Вопрос:

Я читаю книгу под названием Flask Web Development. В настоящее время я на этапе модульного тестирования. Когда я запускаю свой простой тест, он выдает ошибку утверждения. Я знаю, что это будет что-то легкое, но я просто не могу понять это сам. Я просто не понимаю, что там происходит не так.

 test_app_exists (test_basics.BasicsTestCase) ... ok
test_app_is_testing (test_basics.BasicsTestCase) ... FAIL

======================================================================
FAIL: test_app_is_testing (test_basics.BasicsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:UsersdaniePycharmProjectsflaskWebDevelopmentteststest_basics.py", line 22, in test_app_is_testing
    self.assertTrue(current_app.config['TESTING'])
AssertionError: False is not true

----------------------------------------------------------------------
Ran 2 tests in 0.018s

FAILED (failures=1)
 

Мой тест

 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'])
 

и config.py

     import os
    basedir = os.path.abspath(os.path.dirname(__file__))
    
    class Config:
...
        @staticmethod
        def init_app(app):
            pass
    
    class DevelopmentConfig(Config):
        DEBUG = True
        SQLALCHEMY_DATABASE_URI = 'sqlite:///'   os.path.join(basedir, 'data-dev.sqlite')
    
    class TestingConfig(Config):
        DEBUG = True
        SQLALCHEMY_DATABASE_URI = 'sqlite://' # only store info in temp memory
    
    class ProductionConfig(Config):
        SQLALCHEMY_DATABASE_URI = 'sqlite:///'   os.path.join(basedir, 'data.sqlite')
    
    config = {
        'development': DevelopmentConfig,
        'testing': TestingConfig,
        'production': ProductionConfig,
        'default': DevelopmentConfig
    }
 

команда запуска модульного теста:

 @app.cli.command()
def test():
    import unittest
    tests = unittest.TestLoader().discover('tests')
    unittest.TextTestRunner(verbosity=2).run(tests)
 

Комментарии:

1. Для чего вы использовали camelCase TESTING ?

2. это было так в книге, но даже если я введу его в нижнем регистре, он все равно сделает то же самое