2011-01-26 10 views
2

私はCherryPyアプリケーションを開発しています。私はいくつかの自動テストを作成したいと思います。私はそれのためにnosetestsを使用することを選んだ。アプリケーションはdbバックエンドとしてsqlalchemyを使用するので、fixtureパッケージを使用して固定データセットを提供する必要があります。また、私はWebテストをしたい。ここで私はそれをすべて一緒に設定する方法です:nose/fixture/webtest(amidoinitrite)でcherrypyをテストする

私はすべてのモデルが作成されたファイル内にヘルパー機能init_model(test = False)を持っています。それは、製造またはテスト(もしテスト== Trueまたはcherrypy.request.app.test == TRUE)のデータベースに接続し、その後、私はこのようなテストのための基本クラスを作成している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の子クラスを作成し、これはPythonでテストをやって私の最初の時間であり、このすべてが非常に複雑に思えるself.app.some_method()

を呼び出すことによって、私のテストを行います。私は、著者が意図した通り、過度に複雑でない場合に、私が言及したパッケージを使用しているかどうかを知りたい。

答えて

1

これは、どのサイズのシステムでも通常のテスト用接着剤とほとんど同じです。つまり、過度に複雑ではありません。

実際、私はある程度の複雑さを示唆しています。それぞれの子テストのクラスごとに新しいデータベースを設定するのは本当に遅いと思います。少なくとも、クラスごとに1回ではなく、実行ごとにすべてのテーブルを設定するのがより一般的です。次に、それぞれのテストメソッドで必要なすべてのデータを作成するか、トランザクション内で各テストケースを実行して、すべてをfinally:ブロックにロールバックします。

関連する問題