Создание новой базы данных для тестирования моделей колб - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь создать тестовую базу данных (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()

Но в итоге получается, что после теста моя основная база была удалена. И я понимаю, что это происходит потому, что новая база данных не создается. Но я не могу понять, почему. Какие изменения кода мне нужно сделать?

...