2011-01-26 111 views
2

我正在開發CherryPy應用程序,我想爲它編寫一些自動化測試。我選擇使用nosetests。應用程序使用sqlalchemy作爲db後端,所以我需要使用fixture包來提供固定的數據集。我也想做webtest。以下是我如何設置它們:用鼻子/夾具/ webtest(amidoinitrite)測試cherrypy

我在創建所有模型的文件中有一個幫助函數init_model(test = False)。它連接到生產或測試(如果測試==真或cherrypy.request.app.test ==真)數據庫,並呼籲create_all

然後我創建了一個基類測試是這樣的:

class BaseTest(DataTestCase): 
def __init__(self): 
    init_model(True) 
    application.test = True 
    self.app = TestApp(application) 
    self.fixture = SQLAlchemyFixture(env = models, engine = meta.engine, style = NamedDataStyle()) 
    self.datasets = (
     # all the datasets go here 
     ) 

現在我通過創建子類BaseTest來測試並調用self.app.some_method()

這是我第一次在python中進行測試,所有這些看起來都非常複雜。我想知道,如果我正在使用上述軟件包作爲他們的作者意圖,並且它不是過於複雜。

回答

1

這看起來大部分與任何尺寸系統的正常測試膠水相似。換句話說,它不是太複雜。

事實上,我建議在一個方面稍微複雜一點:我想你會發現在每個孩子測試課中設置一個新的數據庫非常慢。至少每次運行一次,而不是每個班一次設置所有表更常見。然後,您可以讓每種測試方法爲自己的需要創建所需的所有數據,並且/或者在事務中運行每個測試用例,並將其全部回滾到finally:塊中。