私はpytestをいくつかの複雑な依存関係注入フィクスチャで使用しています。私は長鎖で他の器具を使用する器具を持っています。私は特定のテストのためにチェーンの真ん中のいくつかの器具を変更することができるようにしたいと思います。pytestのサブフィクスチャを無効にする
を考えると、これらの(簡体字)備品:
@pytest.fixture
def cache():
return Cache()
# Use cache fixture in a new fixture.
@pytest.fixture
def resource(cache):
return Resource(cache=cache, working=True)
# Use resource fixture in a new fixture.
@pytest.fixture
def service(resource):
return Service(resource=resource)
そして、いくつかのテスト:
def test_service_when_resource_working(service):
assert service.status == "good"
def test_service_when_resource_broken(service):
assert service.status == "bad"
それはこのようなものだように、私はresource
フィクスチャを無効にするにはどうすればよい:
@pytest.fixture
def broken_resource(cache):
return Resource(cache=cache, working=False)
。 .. test_service_when_resource_broken
のテストケースの場合のみですか?私はbroken_resource
を使用するbroken_service
を作成することができますが、現実には依存関係のチェーンが長く、すべてのフィクスチャを再利用したいのですが、選択されたテストのために中間で一部を選択的に変更します。
は、私は、この(擬似コード)のような何かをしたい:
@pytest.override_fixture('resource', 'broken_resource')
def test_service_when_resource_broken(service):
# service should have been instantiated with broken_resource instead of resource.
assert service.status == "bad"
パーフェクト。ありがとう! –
喜んで、それは助けられました。 – Sanju