2

私は CherryPy アプリケーションを開発しており、自動テストを作成したいと考えています。私はノーズテストを使用することにしました。アプリケーションは sqlalchemy を db バックエンドとして使用するため、fixture パッケージを使用して固定データセットを提供する必要があります。また、私はウェブテストをしたいと思っています。すべてをまとめて設定する方法は次のとおりです。

init_model(test = False)すべてのモデルが作成されるファイルにヘルパー関数があります。本番またはテスト (test == 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 の子クラスを作成して呼び出してテストを行います。self.app.some_method()

Pythonでテストを行うのはこれが初めてで、これはすべて非常に複雑に思えます。上記のパッケージを作成者が意図したとおりに使用しているかどうか、および複雑すぎないかどうかを知りたいです。

4

1 に答える 1

1

これは、ほとんどの場合、任意のサイズのシステムの通常のテスト接着剤のように見えます. 言い換えれば、過度に複雑ではありません。

実際には、1 つの点でもう少し複雑にすることをお勧めします。各子テスト クラスで新しいデータベースを設定すると、非常に時間がかかることがわかると思います。クラスごとに 1 回ではなく、実行ごとに少なくとも 1 回すべてのテーブルをセットアップする方が一般的です。次に、各テスト メソッドに必要なすべてのデータを独自に作成させるか、トランザクションで各テスト ケースを実行し、すべてをfinally:ブロックにロールバックします。

于 2011-01-27T02:26:32.977 に答える