2011-02-24 34 views
3

我有一些Python代碼抽象數據庫和它的業務邏輯。此代碼已被單元測試覆蓋,但現在我需要針對不同的DB(MySQL,SQLite等...)測試此代碼。運行不同配置的相同測試

用不同配置傳遞同一組測試的默認模式是什麼?我的目標是確保抽象層如預期的那樣獨立於底層數據庫。如果這可能有幫助,我使用nosetests進行測試,但它似乎缺少Suite Test概念

此致敬意。

+0

如何將應用程序綁定到數據庫?特定數據庫驅動程序如何配置到您的應用程序中? – 2011-02-24 12:02:25

+0

我正在使用SQLAlchemy執行任意SQL語句。我知道,這不是SQLAlchemy的預期用途,但遺留代碼就是它的原型。 Oracle sql和SQLite sql有一些區別,所以我想確定它們的行爲方式都是一樣的。 – tonicebrian 2011-02-24 14:49:18

回答

1

我喜歡用test fixtures在其中我有幾個類似的測試情況。在Python中,在鼻子下,我通常將其實現爲其他模塊導入的通用測試模塊。舉例來說,我可能會使用以下文件結構:

db_fixtures.py:

import unittest 

class BaseDB(unittest.TestCase): 
    def testFirstOperation(self): 
    self.db.query("Foo") 
    def testSecondOperation(self): 
    self.db.query("Blah")  

database_tests.py:

import db_fixtures 

class SQliteTest(db_fixtures.BaseDB): 
    def setUp(self): 
    self.db = createSqliteconnection() 

class MySQLTest(db_fixtures.BaseDB): 
    def setUp(self): 
    self.db = createMySQLconnection() 

這將運行在BaseDB定義在My​​SQL和SQlite的所有測試。請注意,我將db_fixtures.py命名爲不會由Nose運行。

+0

如果downvoter有一個建議,我有興趣聽到它 – dbn 2014-08-27 01:08:52

-1

鼻子支持測試套件只是導入和使用unittest.TestSuite。實際上,鼻子會很高興地運行使用標準庫的unittest模塊編寫的任何測試,因此測試者不需要用鼻子樣式書寫鼻子測試跑步者發現的東西。但是,我懷疑你需要比測試套件支持更好的測試你正在談論的那種測試,但是關於你的應用程序的更多細節是真正解決這個問題所必需的。

-1

使用--attrib插件,並在commadn線

 
1. nosetests -s -a 'sqlite' 
2. nosetests -s -a 'mysql' 
+0

我認爲這回答* *對面的問題:-)這些命令讓你運行你的測試的一個子集。 OP想要在多個基板上重新運行相同的測試。 – dbn 2013-03-06 01:16:35

相關問題