我有這樣的代碼:單獨使用內存數據庫進行測試 - 如何?
my_app.py:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
import os
app = Flask(__name__)
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["BASE_DIR"] = os.path.abspath(os.path.dirname(__file__))
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + os.path.abspath(os.path.join(app.config["BASE_DIR"], "app.db"))
db = SQLAlchemy(app)
from user import User
# create all tables
db.create_all()
if not User.query.filter_by(username="test").first():
dummy_user = User(username="test", password="", email="")
db.session.add(dummy_user)
db.session.commit()
user.py:
from flask.ext.login import UserMixin
from my_app import db
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(255), nullable=False, unique=True)
email = db.Column(db.String(255), nullable=False, unique=True)
password = db.Column(db.String(255), nullable=False)
tests.py:
from flask.ext.testing import TestCase
from my_app import app, db
from user import User
import os
import unittest
class MyTestCase(TestCase):
def create_app(self):
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:"
app.config["TESTING"] = True
return app
def setUp(self):
db.create_all()
def tearDown(self):
db.session.remove()
db.drop_all()
def test_dummy(self):
assert User.query.count() == 0
if __name__ == '__main__':
unittest.main()
如何使單元測試工作?
我想我的單元測試使用的內存數據庫從主應用程序分開,但顯然我不能做我試圖(通過只是改變了SQLALCHEMY_DATABASE_URI值)
感謝的方式提前!
在這裏有一些有用的位:http://flask.pocoo.org/docs/0.10/config/#development-production – reptilicus
我不認爲這對我的問題有幫助。我已經定義了一個不同於用於生產的配置。 – CryNickSystems
你叫'create_app'嗎? – dirn