Thread: [SQLObject] Run SQLObject with a mock database connection?
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Matthew W. <ma...@tp...> - 2008-11-01 23:25:21
|
I've got a lot of complex logic in some of my SQLObject methods, and I'd like to verify that they work in unit tests, and I don't want to have any kind of database connection, not even a SQLite in-memory database. For example, I've got a parent-child relationship inside of one table, where rows have an optional "parent row" field. I want to set the status on the parent row based on the status of all the different children. For example: When all the children have a status AAA, I'll set the parent status to AAA. When all the children have a status BBB, I'll set the parent status to BBB. When the children have different status, I'll set the parent status to 'Mixed'. Of course, this is a simplification of something much uglier. I want to make sure I execute the correct logic by feeding in lots of possible scenarios through my function. The test will run much faster if I can fake the connection to a database. Is this possible? Any advice on mocking or stubbing a database connection is welcome. Matt |
From: Oleg B. <ph...@ph...> - 2008-11-04 18:37:33
|
Hello! Sorry for late answer - I was out of town. (It's strange nobody else answered the question.) On Sat, Nov 01, 2008 at 11:25:07PM +0000, Matthew Wilson wrote: > I've got a lot of complex logic in some of my SQLObject methods, and I'd > like to verify that they work in unit tests, and I don't want to have > any kind of database connection, not even a SQLite in-memory database. [skip] > The test will run much faster if I can fake the connection to a > database. > > Is this possible? Any advice on mocking or stubbing a database > connection is welcome. There is no read-made fake connection in SQLObject, and it'd be a bit hard to write one, but writing one is the only option if you don't want to use even SQLite. You have to implement a connection class - look at SQLiteConnection for an example (sqlobject/sqlite/sqliteconnection.py). Oh, even better - look at MySQLConnection and PostgresConnection - they don't have as many internal helper methods. You don't need to implement metainformation manipulation and retrieval methods - tableExists, add/delColumn, columnsFromSchema, guessClass - but other methods are must. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |