Я пытаюсь создать тестовую базу данных (postgresql) для моего unittest. Для этого я создал новый класс конфигурации в файле config.py.
class Configuration(object):
DEBUG = True
SECRET_KEY = os.environ.get('SECRET_KEY') or 'e5-11e5-9e39-d3b532c10a282'
SQLALCHEMY_DATABASE_URI = 'postgresql://%(user)s:%(pw)s@%(host)s:%(port)s/%(db)s' % POSTGRES
SQLALCHEMY_TRACK_MODIFICATIONS = False
class TestingConfig(Configuration):
TESTING = True
SQLALCHEMY_DATABASE_URI = 'postgresql://%(user)s:%(pw)s@%(host)s:%(port)s/%(db)s' % TEST_POSTGRES
И создайте test.py, где создали новую базу данных и две модели экземпляров для теста.
from flask import Flask
import unittest
from app import db, app
from images.models import Images, ImageGroup
class FlaskTestCase(unittest.TestCase):
def create_app(self):
app.config.from_object('config.TestingConfig')
return app
def setUp(self):
db.create_all()
im_group = ImageGroup()
db.session.add(im_group)
db.session.commit()
image = Images(img_filename='test.jpg', counter=1, img_data='tests', imagegroup_id=im_group.id)
db.session.add(image)
db.session.commit()
def tearDown(self):
db.session.remove()
db.drop_all()
def test_model_exist(self):
self.assertTrue(db.session.query(Images).filter(Images.img_filename == 'test.jpg').first() is not None)
pass
if __name__ == "__main__":
unittest.main()
Но в итоге получается, что после теста моя основная база была удалена.
И я понимаю, что это происходит потому, что новая база данных не создается. Но я не могу понять, почему. Какие изменения кода мне нужно сделать?