创建用于测试Flask应用程序模型的新数据库

时间:2019-04-03 14:17:12

标签: python flask flask-sqlalchemy python-unittest

我尝试为我的单元测试创​​建测试数据库(postgresql)。为此,我在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()

但是最后,结果表明,在测试之后,我的主要基础被删除了。 而且我知道发生这种情况是因为没有创建新的数据库。但是我不明白为什么。我需要进行哪些代码更改?

0 个答案:

没有答案