我知道這個問題已經被問過很多次,但我有一些具體的代碼示例,我想知道是否是有意義的單元測試他們:單元測試數據庫訪問層
class FooAPI(object):
def create(self, prop1, prop2, prop3, prop4, prop5):
sql = "INSERT INTO foo (prop1, prop2, prop3) VALUES (?, ?, ?)"
self.connection.execute(sql, (prop1, prop2, prop3))
foo_id = self.connection.insert_id()
sql = "INSERT INTO foo_settings (foo_id, prop4, prop5) VALUES (?, ?, ?)"
self.connection.execute(sql, (foo_id, prop4, prop5))
return foo_id
def update(self, foo_id, prop1, prop2, prop3, prop4, prop5):
"Update code similar to above"
def delete(self, foo_id):
sql = "DELETE FROM foo WHERE foo_id = ?"
self.connection.execute(sql, (foo_id,))
def find(self, foo_id=None, prop1=None):
"Find objects by ID or by prop1"
它使感覺單元測試上面的代碼,以及如何去做這件事。這裏有兩個複雜的因素:
- 數據庫本身是不平凡的,我目前還沒有簡單的方法來創建所有測試數據
- 架構是不斷髮展的數據庫,這意味着它是不可能創建一個測試數據庫一勞永逸。
是的,有一個簡單的方法來初始化一個空白數據庫:我們用SQLAlchemy維護模型。由於模式定期更改,因此測試數據更加困難。 – ipartola 2012-02-19 03:02:50
它變化的頻率如何? http://stackoverflow.com/questions/1346037/changing-database-schemas-unit-tests – 2012-02-19 12:16:33