<div dir="ltr"><div><br></div><table style="margin:0px;padding:0px;border:0px;font-size:13px;border-collapse:collapse;color:rgb(36,39,41);font-family:arial,&quot;helvetica neue&quot;,helvetica,sans-serif"><tbody style="margin:0px;padding:0px;border:0px"><tr style="margin:0px;padding:0px;border:0px"><td class="gmail-votecell" style="padding:0px 15px 0px 0px;border:0px;vertical-align:top"><div class="gmail-vote" style="margin:0px;padding:0px;border:0px;text-align:center;min-width:46px"><span class="gmail-vote-count-post" style="margin:8px 0px;padding:0px;border:0px;font-size:20px;display:block;color:rgb(106,115,124)"><br></span><a class="gmail-vote-down-off" title="This question does not show any research effort; it is unclear or not useful" style="margin:0px auto 10px;padding:0px;border:0px;font-size:1px;color:rgb(0,119,204);background-image:url(&quot;&quot;);background-size:initial;background-repeat:no-repeat;overflow:hidden;display:block;width:40px;height:30px;background-position:0px -220px">down vote</a><a class="gmail-star-off" href="http://stackoverflow.com/questions/42113519/how-to-use-same-pytest-hook-at-module-and-function-level#" title="Click to mark as favorite question (click again to undo)" style="margin:0px auto 2px;padding:0px;border:0px;font-size:1px;color:rgb(0,119,204);text-decoration:none;background-image:url(&quot;&quot;);background-size:initial;background-repeat:no-repeat;overflow:hidden;display:block;width:40px;height:30px;background-position:0px -120px">favorite</a><div class="gmail-favoritecount" style="margin:0px;padding:0px;border:0px"><br></div></div></td><td class="gmail-postcell" style="padding:0px;border:0px;vertical-align:top"><div style="margin:0px;padding:0px;border:0px"><div class="gmail-post-text" style="margin:0px 0px 5px;padding:0px;border:0px;font-size:15px;width:660px;word-wrap:break-word;line-height:1.3"><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">I am new to pytest and trying to use pytest for my testing purpose.</p><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">The TestCase layout which i have is</p><pre class="gmail-lang-py gmail-prettyprint gmail-prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,&quot;lucida console&quot;,&quot;liberation mono&quot;,&quot;dejavu sans mono&quot;,&quot;bitstream vera sans mono&quot;,&quot;courier new&quot;,monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,&quot;lucida console&quot;,&quot;liberation mono&quot;,&quot;dejavu sans mono&quot;,&quot;bitstream vera sans mono&quot;,&quot;courier new&quot;,monospace,sans-serif;white-space:inherit"><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">common_configuration

TC_1
TC_2
TC_3</span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">Now i have a requirement to take backup of configuration before each TC and also before common_configuration is done and restore it after all the TCs are done..</p><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">i am planning to declare common_configuration itself as a module level fixture..</p><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">For the configuration backup and reversal part, i am trying to implement that also as fixtures(and its finaliser to reverse configuration)..</p><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">So the flow i am trying to achieve is</p><pre class="gmail-lang-py gmail-prettyprint gmail-prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,&quot;lucida console&quot;,&quot;liberation mono&quot;,&quot;dejavu sans mono&quot;,&quot;bitstream vera sans mono&quot;,&quot;courier new&quot;,monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,&quot;lucida console&quot;,&quot;liberation mono&quot;,&quot;dejavu sans mono&quot;,&quot;bitstream vera sans mono&quot;,&quot;courier new&quot;,monospace,sans-serif;white-space:inherit"><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">configurationBackup
common_Configuration  
configurationBackup
TC_1
configurationBackup</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">.</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">finalizer
configurationBackup
TC_2
configurationBackup</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">.</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">finalizer
configurationBackup
TC_3
configurationBackup</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">.</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">finalizer
configurationBackup</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">.</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">finalizer</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">which </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">is</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> done before common_Configuration</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">I tried couple of things.</p><ol style="margin:0px 0px 1em 30px;padding:0px;border:0px"><li style="margin:0px 0px 0.5em;padding:0px;border:0px;word-wrap:break-word"><p style="margin:0px;padding:0px;border:0px;clear:both">declaring configurationBackup in conftest.py as a function level fixture)as an autouse fixture). But the problem here is its executed before common_configuration fixture for TC_1</p></li><li style="margin:0px;padding:0px;border:0px;word-wrap:break-word"><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">tried using standar pytest hooks. There is a pytest hook pytest_runtest_call.. i was thinking if i can decorate this hook function with my configurationBackup fixture like this:</p></li></ol>      @pytest.mark.usefixtures(&quot;configurationBackup&quot;)  </div><div class="gmail-post-text" style="margin:0px 0px 5px;padding:0px;border:0px;font-size:15px;width:660px;word-wrap:break-word;line-height:1.3">      def pytest_runtest_call(item):</div><div class="gmail-post-text" style="margin:0px 0px 5px;padding:0px;border:0px;font-size:15px;width:660px;word-wrap:break-word;line-height:1.3">  <br><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">But this also doesnt seem to work... my configurationBackup fixture is not called at all..</p><p style="margin:0px 0px 1em;padding:0px;border:0px;clear:both">Any other ways to solve this usecase?</p></div></div></td></tr></tbody></table><div>                I understand that a session level fixture can be called from module level..(so from lower scope we can call higher scope fixture)..I tried declaring the configuration Backup as session level fixture and calling it from module scope/function scope.. but the fixture was called once in session scope and was not called again in module scope.. can the same fixture be called at two levels?</div>-- <br><div class="gmail_signature">அன்புடன்,<br>
பா. அருண் காளி ராசா </div>
</div>