我目前有一个使用flask-sqlalchemy的应用程序。我的模型连接到postgresql数据库,现在我想编写单元测试(使用nose)。我被告知使用SQLite创建一个新的数据库进行测试,经过大量搜索(并查看flask-sqlalchemy网站上的短信部分),我仍然感到困惑,如何做到这一点。我的model.py中的每个类看起来如下所示:
db = SQLAlchemy(app)
class Prod(db.Model):
__tablename__ = 'prod'
id = db.Column(db.Integer, primary_key=True)
desc = db.Column(db.String)
def __init__(self, id, desc):
self.id = id
self.desc = desc
我的config.py:
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://name:pass@server/db
我想通过为每个测试设置和拆除新数据库来测试新文件中的插入函数。如果有人能给我一些很好的示例代码。谢谢!
答案 0 :(得分:2)
我无法回答您的具体问题,但会提供一些一般性建议:
您会发现为每个测试设置和拆除整个数据库的速度太慢。想象一下,将来可能有数百次测试甚至数千次。
我们采取的方法是:
在我管理的项目中,我们有一个1070个测试的测试套件,使用这种方法在大约5分钟内运行。
如果我们采取了您的方法怎么办?让我们假设这些测试中有50%实际上运行数据库(并且需要重新加载)。重载时为1070 * .50 * 20秒/ 3600 = 2.97小时。哎呀 - 这太慢了,无法发挥作用。
即使规模要小得多,如果你的测试套件在1分钟而不是20分钟内运行,你会更开心。