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