<div dir="ltr">Hi,<div><br></div><div><div><div>I have two fixtures defined in my conftest.py as autouse fixtures..</div><div><b><i><br></i></b></div><div><b><i>@pytest.fixture(scope=&#39;module&#39;,autouse=True)</i></b></div><div><b><i>def myModFix(request):</i></b></div><div><b><i>    print(&quot;In MyModFix..&quot;)</i></b></div><div><b><i>    yield</i></b></div><div><b><i>    print(&quot;Post MyModFix..&quot;)</i></b></div><div><b><i><br></i></b></div><div><b><i>@pytest.fixture(scope=&quot;function&quot;,<b style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><i>autouse=True</i></b>)</i></b></div><div><b><i>def myFuncFix(request,testModFix):</i></b></div><div><b><i>    print(&quot;In myFuncModFix&quot;)</i></b></div><div><b><i>    yield</i></b></div><div><b><i>    print(&quot;Post myFuncModFix&quot;)</i></b></div><div><b><i><br></i></b></div><div>My Testcase file will have some more fixture defined.. </div><div><br></div><div><b><i>@pytest.fixture(scope=&#39;module&#39;)</i></b></div><div><b><i>def testModFix(request):</i></b></div><div><b><i>    print(&quot;In testModFix..&quot;)</i></b></div><div><b><i>    yield</i></b></div><div><b><i>    print(&quot;post testModFix..&quot;)</i></b></div><div><b><i><br></i></b></div><div><b><i>@pytest.fixture(scope=&#39;module&#39;)</i></b></div><div><b><i>def secondTestModFix(request):</i></b></div><div><b><i>    print(&quot;In 2ndTestModFix..&quot;)</i></b></div><div><b><i>    yield</i></b></div><div><b><i>    print(&quot;post 2ndTestModFix..&quot;)</i></b></div><div><br></div></div><div><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">All my testcase file will defenitely have<span> </span></span><b style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><i>testModFix</i></b><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span> </span>fixture, which is added as a dependency to myFuncFix. In this way i achieve my desired ordering..</span><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><b>myModFix</b></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><b>testModFix</b></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><b>myFuncFix</b></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">But in certain cases i may have a second module level fixture defined like the example shown above as <span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><i style="font-weight:bold">secondTestModFix</i><i style="font-weight:bold;font-style:normal">. </i>In this case the desired ordering i want is</span></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><br></span></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><b>myModFix</b></span></span></div><div><b>testModFix</b></div><div><b>secondTestModFix</b></div><div><b>myFuncFix</b></div><div><br></div><div>But i not able to achieve this order even if i explicitly specify the fixture order in the testcase:</div><div><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><b><i><br class="gmail-Apple-interchange-newline">def test_values(myModFix, testModFix, secondTestModFix, myFuncFix):</i></b></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><b><i>    assert True</i></b></div><div><b style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><i><br></i></b></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"> When i execute the above code my output is:</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><br></span></div><div><span style="text-align:start;text-indent:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><div><b><i>$ pytest -vs tests/test_tc.py</i></b></div><div><b><i>================================================================ test session starts ================================================================</i></b></div><div><b><i>platform linux2 -- Python 2.7.14, pytest-3.1.3, py-1.4.34, pluggy-0.4.0 -- /usr/bin/python</i></b></div><div><b><i>cachedir: .cache</i></b></div><div><b><i>rootdir: /home/akr8986/PythonTries/perf, inifile:</i></b></div><div><b><i>plugins: xdist-1.22.2, forked-0.2</i></b></div><div><b><i>collected 1 item s</i></b></div><div><b><i><br></i></b></div><div><b><i>tests/test_tc.py::test_values In MyModFix..</i></b></div><div><b><i>In testModFix..</i></b></div><div><b><i>In myFuncModFix</i></b></div><div><b><i>In 2ndTestModFix..</i></b></div><div><b><i>PASSEDPost myFuncModFix</i></b></div><div><b><i>post 2ndTestModFix..</i></b></div><div><b><i>post testModFix..</i></b></div><div><b><i>Post MyModFix..</i></b></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px">Suppose i set autouse as False for myFuncModFix then the order specified in the testcase is pickedup correctly.</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div><div><b><i>$ pytest -vs tests/test_tc.py</i></b></div><div><b><i>================================================================ test session starts ================================================================</i></b></div><div><b><i>platform linux2 -- Python 2.7.14, pytest-3.1.3, py-1.4.34, pluggy-0.4.0 -- /usr/bin/python</i></b></div><div><b><i>cachedir: .cache</i></b></div><div><b><i>rootdir: /home/akr8986/PythonTries/perf, inifile:</i></b></div><div><b><i>plugins: xdist-1.22.2, forked-0.2</i></b></div><div><b><i>collected 1 item s</i></b></div><div><b><i><br></i></b></div><div><b><i>tests/test_tc.py::test_values In MyModFix..</i></b></div><div><b><i>In testModFix..</i></b></div><div><b><i>In 2ndTestModFix..</i></b></div><div><b><i>In myFuncModFix</i></b></div><div><b><i>PASSEDPost myFuncModFix</i></b></div><div><b><i>post 2ndTestModFix..</i></b></div><div><b><i>post testModFix..</i></b></div><div><b><i>Post MyModFix..</i></b></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px"><br></div></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px">Why is the explicit order specified in the testcase not respected for autouse fixtures??</div></span></div><div><br></div>-- <br><div class="gmail_signature">Regards</div><div class="gmail_signature">Arun Kaliraja.B</div>
</div></div>