我知道这个问题已经被问过很多次,但我有一些具体的代码示例,我想知道是否是有意义的单元测试他们:单元测试数据库访问层
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