test_getfixturevalue_dynamic.py


Overview

This file contains a minimal set of `pytest` fixtures and a test function designed to demonstrate and verify `pytest`'s dynamic fixture resolution using [request.getfixturevalue()](/projects/286/67370). It specifically tests how fixtures can be retrieved and composed dynamically at runtime, and it checks the order and presence of fixture names in the test context.

The file is primarily intended for exploring `pytest` internals related to fixture dependency resolution, especially when fixtures call [request.getfixturevalue()](/projects/286/67370) to access other fixtures at runtime instead of declaring them in their signature.


Detailed Explanation

Imports


Fixtures

dynamic

@pytest.fixture
def dynamic():
    pass

a

@pytest.fixture
def a(request):
    request.getfixturevalue("dynamic")

b

@pytest.fixture
def b(a):
    pass

Test Function

test

def test(b, request):
    assert request.fixturenames == ["b", "request", "a", "dynamic"]

Important Implementation Details and Algorithms


Interaction with Other System Parts


Visual Diagram

classDiagram
    class Fixture_dynamic {
        +dynamic()
    }
    class Fixture_a {
        +a(request)
        - calls getfixturevalue("dynamic")
    }
    class Fixture_b {
        +b(a)
    }
    class TestFunction_test {
        +test(b, request)
        - asserts fixture name order
    }

    Fixture_b --> Fixture_a : depends on
    Fixture_a ..> Fixture_dynamic : dynamically uses
    TestFunction_test --> Fixture_b : uses
    TestFunction_test --> pytest.Request : uses

Summary

Entity

Description

Parameters

Returns

Notes

`dynamic`

Empty fixture; leaf node in fixture graph.

None

None

Dynamically accessed by `a`.

`a`

Fixture dynamically calls `dynamic` fixture.

`request`: pytest Request

None

Uses `request.getfixturevalue("dynamic")`.

`b`

Fixture depending on `a`.

`a`: fixture

None

Demonstrates dependency chaining.

`test`

Test function asserting fixture name order.

`b`, `request`

None

Verifies that dynamic fixtures appear in list.


Usage Notes


End of Documentation for test_getfixturevalue_dynamic.py