1

@rollback職場では、選択したテスト関数でデコレーターを使用します。これは、そのテスト中に行われたデータベースの変更をロールバックします。

私は最近@pytest.mark.parametrize(...)、フックとpytest_funcarg__XXXフックの両方で、いくつかのユースケースに pytest の依存性注入を使い始めました。残念ながら、これは装飾されたテスト関数と衝突します。

どうすればこれを機能させることができますか?

私の最初のアイデアは、カスタム マーカーを使用することでした@pytest.mark.rollback

def rollback(meth):
    """Original rollback function"""
    ...

def pytest_runtest_setup(item):
    if not isinstance(item, pytest.Function):
        return
    if hasattr(item.obj, 'rollback'):
        item = rollback(item)

このようなアプローチは実際に機能しますか?

4

1 に答える 1

0

このようなものはうまくいくはずです、はい。データベースを管理するためにグローバル ステートを使用しているようですね。次の 2.3 リリースのドキュメントをチェックアウトすることをお勧めします。これには、このページのさらに下にある「トランザクション」の例もあります。

http://pytest.org/dev/fixture.html

リリースはいつでも可能で、「pip install -i http://pypi.testrun.org -U pytest」で候補をインストールできます。

于 2012-10-11T10:29:25.877 に答える