2017-09-01 12 views
1

pytestユニットテストでフィクスチャを使用するのが難しいです。フィクスチャの前にPytestコールセットアップ()

私はこのようなテストクラスを使用しています:

class TestMyApp(object): 

    def setup(self): 
     self.client = mock_client() 

    @pytest.fixture 
    def client_item(self): 
     return self.client.create_item('test_item') 

    def test_something1(self, client_item): 
     # Test here. 
     pass 

私は次の例外を取得する上記のテストを実行すると:

AttributeError: 'TestMyApp' object has no attribute 'client' 

私はclient_item()フィクスチャ機能がされているため、これがあると信じてsetup()関数の前に呼び出されます。

フィクスチャを正しく使用していませんか?または、治具の機能の前にsetup()を呼び出すことができる何らかの方法がありますか?

ありがとうございます。

答えて

1

備品あなたはすべての方法ダウン器具を使用することができますので、他の器具を使用することができます。

class TestMyApp(object): 

    @pytest.fixture 
    def client(self): 
     return mock_client() 

    @pytest.fixture 
    def client_item(self, client): 
     return client.create_item('test_item') 

    def test_something1(self, client_item): 
     # Test here. 
     pass 

documentationは微妙のxUnitスタイルセットアップ/ティアダウンの方法を超える備品をお勧めします。

これらのセットアップながら/ティアダウンの方法は、unittestまたはnoseのバックグラウンドを持つ人にとってシンプルで使い慣れているので、pytestのより強力なfixture mechanismを使用して、依存性注入という概念を活用することを検討してください。特に大規模なプロジェクトや機能テストのために、テスト状態を管理するためのモジュラーでスケーラブルなアプローチ。

これは、2つのスタイル混合することができると言うことになりますが、物事が起こるれる順序について明確ではありません。

関連する問題