-
- Notifications
You must be signed in to change notification settings - Fork 2.9k
Closed
Labels
topic: fixturesanything involving fixtures directly or indirectlyanything involving fixtures directly or indirectlytype: questiongeneral question, might be closed after 2 weeks of inactivitygeneral question, might be closed after 2 weeks of inactivity
Description
Hi,
The example below seems to always lead to the same tests execution order, in both pytest 2, 3, and 4. However the order is counter intuitive:
import pytest @pytest.fixture(params=[(1, 2), (3, 4)], ids=str) def arg1_arg2_root(request): return request.param @pytest.fixture def arg1(arg1_arg2_root): return arg1_arg2_root[0] @pytest.fixture def arg2(arg1_arg2_root): return arg1_arg2_root[1] @pytest.fixture(params=[5, 6]) def arg3(request): return request.param def test_order(arg1, arg2, arg3): passleads to
<..>::test_order[5-(1, 2)] <..>::test_order[5-(3, 4)] <..>::test_order[6-(1, 2)] <..>::test_order[6-(3, 4)] However it seems counter-intuitive to me. Indeed all the fixtures are function-scopes fixtures, and the function uses arg1 (so, arg1_arg2_root) first, then arg2 (same root), then arg3. I would therefore expect:
<..>::test_order[(1, 2)-5] <..>::test_order[(1, 2)-6] <..>::test_order[(3, 4)-5] <..>::test_order[(3, 4)-6] Do you agree ? If so that's maybe a bug happening when the fixture closure is computed?
Metadata
Metadata
Assignees
Labels
topic: fixturesanything involving fixtures directly or indirectlyanything involving fixtures directly or indirectlytype: questiongeneral question, might be closed after 2 weeks of inactivitygeneral question, might be closed after 2 weeks of inactivity