<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:1.2em 0px!important">On Wed, Jun 2, 2021 at 11:42 AM Hartmut Goebel <a href="http://mailto:h.goebel@crazy-compilers.com">h.goebel@crazy-compilers.com</a> wrote:</p>
<p style="margin:1.2em 0px!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <div>After trying more, I can rephrase my question:<br></div></div></blockquote><p></p></div><p style="margin:1.2em 0px!important"></p>
<p style="margin:1.2em 0px!important">Ahh now I got what you mean, thanks for clarifying. </p>
<p style="margin:1.2em 0px!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
    <p>Is there some way to postpone execution of fixtures until into
      the spawned process?<br>
    </p>
    <p>Calling fixtures as functions would have been an options, but has
      been disabled in pytest 4.0.<br></p></div></blockquote><p></p></div><p style="margin:1.2em 0px!important"></p>
<p style="margin:1.2em 0px!important">One solution would be to do a small refactoring in your fixtures, to also expose their functionality as functions. For example:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-python" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;background:rgb(35,36,31);color:rgb(248,248,242)"><span class="hljs-decorator" style="color:rgb(117,113,94)">@pytest.fixture</span>
<span class="hljs-function" style="color:rgb(249,38,114)"><span class="hljs-keyword" style="color:rgb(249,38,114);color:rgb(102,217,239)">def</span> <span class="hljs-title" style="color:rgb(166,226,46)">resource</span><span class="hljs-params" style="color:rgb(248,248,242)">(tmp_path)</span>:</span>
    result = Resource(tmp_path)
    <span class="hljs-keyword" style="color:rgb(249,38,114)">yield</span> result
    result.close()
</code></pre>
<p style="margin:1.2em 0px!important">Into:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-python" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;background:rgb(35,36,31);color:rgb(248,248,242)"><span class="hljs-decorator" style="color:rgb(117,113,94)">@contextmanager</span>
<span class="hljs-function" style="color:rgb(249,38,114)"><span class="hljs-keyword" style="color:rgb(249,38,114);color:rgb(102,217,239)">def</span> <span class="hljs-title" style="color:rgb(166,226,46)">using_resource</span><span class="hljs-params" style="color:rgb(248,248,242)">(path)</span>:</span>
    result = Resource(path)
    <span class="hljs-keyword" style="color:rgb(249,38,114)">try</span>:
        <span class="hljs-keyword" style="color:rgb(249,38,114)">yield</span> result
    <span class="hljs-keyword" style="color:rgb(249,38,114)">finally</span>:
        result.close()

<span class="hljs-decorator" style="color:rgb(117,113,94)">@pytest.fixture</span>
<span class="hljs-function" style="color:rgb(249,38,114)"><span class="hljs-keyword" style="color:rgb(249,38,114);color:rgb(102,217,239)">def</span> <span class="hljs-title" style="color:rgb(166,226,46)">resource</span><span class="hljs-params" style="color:rgb(248,248,242)">(tmp_path)</span>:</span>
    <span class="hljs-keyword" style="color:rgb(249,38,114)">with</span> using_resource(tmp_path) <span class="hljs-keyword" style="color:rgb(249,38,114)">as</span> result:
        <span class="hljs-keyword" style="color:rgb(249,38,114)">yield</span> result
</code></pre>
<p style="margin:1.2em 0px!important">Cheers,<br>Bruno.</p>
<div title="MDH:PGRpdiBkaXI9Imx0ciIgZ21haWxfb3JpZ2luYWw9IjEiIHByb2Nlc3NlZD0idHJ1ZSI+PGJyPjwv
ZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSIgcHJvY2Vzc2VkPSJ0cnVlIj48ZGl2IGRp
cj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciIgcHJvY2Vzc2VkPSJ0cnVlIj5PbiBXZWQsIEp1biAy
LCAyMDIxIGF0IDExOjQyIEFNIEhhcnRtdXQgR29lYmVsICZsdDtoLmdvZWJlbEBjcmF6eS1jb21w
aWxlcnMuY29tJmd0OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1
b3RlIiBzdHlsZT0ibWFyZ2luOiAwcHggMHB4IDBweCAwLjhleDsgYm9yZGVyLWxlZnQ6IDFweCBz
b2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmctbGVmdDogMWV4OyI+CiAgCiAgICAKICAK
ICA8ZGl2IHByb2Nlc3NlZD0idHJ1ZSI+CiAgICA8ZGl2IHByb2Nlc3NlZD0idHJ1ZSI+QWZ0ZXIg
dHJ5aW5nIG1vcmUsIEkgY2FuIHJlcGhyYXNlIG15IHF1ZXN0aW9uOjxicj48L2Rpdj48L2Rpdj48
L2Jsb2NrcXVvdGU+PGRpdiBwcm9jZXNzZWQ9InRydWUiPjxicj48L2Rpdj48ZGl2IHByb2Nlc3Nl
ZD0idHJ1ZSI+QWhoIG5vdyBJIGdvdCB3aGF0IHlvdSBtZWFuLCB0aGFua3MgZm9yIGNsYXJpZnlp
bmcuJm5ic3A7PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFy
Z2luOiAwcHggMHB4IDBweCAwLjhleDsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2IoMjA0LCAy
MDQsIDIwNCk7IHBhZGRpbmctbGVmdDogMWV4OyI+PGRpdiBwcm9jZXNzZWQ9InRydWUiPgogICAg
PHA+SXMgdGhlcmUgc29tZSB3YXkgdG8gcG9zdHBvbmUgZXhlY3V0aW9uIG9mIGZpeHR1cmVzIHVu
dGlsIGludG8KICAgICAgdGhlIHNwYXduZWQgcHJvY2Vzcz88YnI+CiAgICA8L3A+CiAgICA8cD5D
YWxsaW5nIGZpeHR1cmVzIGFzIGZ1bmN0aW9ucyB3b3VsZCBoYXZlIGJlZW4gYW4gb3B0aW9ucywg
YnV0IGhhcwogICAgICBiZWVuIGRpc2FibGVkIGluIHB5dGVzdCA0LjAuPGJyPjwvcD48L2Rpdj48
L2Jsb2NrcXVvdGU+PGRpdiBwcm9jZXNzZWQ9InRydWUiPjxicj48L2Rpdj48ZGl2IHByb2Nlc3Nl
ZD0idHJ1ZSI+T25lIHNvbHV0aW9uIHdvdWxkIGJlIHRvIGRvIGEgc21hbGwgcmVmYWN0b3Jpbmcg
aW4geW91ciBmaXh0dXJlcywgdG8gYWxzbyBleHBvc2UgdGhlaXIgZnVuY3Rpb25hbGl0eSBhcyBm
dW5jdGlvbnMuIEZvciBleGFtcGxlOjwvZGl2PjxkaXYgcHJvY2Vzc2VkPSJ0cnVlIj48YnI+PC9k
aXY+PGRpdiBwcm9jZXNzZWQ9InRydWUiPmBgYHB5dGhvbjxicj5AcHl0ZXN0LmZpeHR1cmU8YnI+
ZGVmIHJlc291cmNlKHRtcF9wYXRoKTo8YnI+Jm5ic3A7ICZuYnNwOyByZXN1bHQgPSBSZXNvdXJj
ZSh0bXBfcGF0aCk8YnI+Jm5ic3A7ICZuYnNwOyB5aWVsZCByZXN1bHQ8YnI+Jm5ic3A7ICZuYnNw
OyByZXN1bHQuY2xvc2UoKTxicj5gYGA8YnI+PGJyPkludG86PGJyPjxicj5gYGBweXRob248YnI+
QGNvbnRleHRtYW5hZ2VyPGJyPmRlZiB1c2luZ19yZXNvdXJjZShwYXRoKTo8YnI+Jm5ic3A7ICZu
YnNwOyByZXN1bHQgPSBSZXNvdXJjZShwYXRoKTxicj4mbmJzcDsgJm5ic3A7IHRyeTo8YnI+Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHlpZWxkIHJlc3VsdDxicj4mbmJzcDsgJm5ic3A7IGZp
bmFsbHk6PGJyPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyByZXN1bHQuY2xvc2UoKTxicj48
YnI+QHB5dGVzdC5maXh0dXJlPGJyPmRlZiByZXNvdXJjZSh0bXBfcGF0aCk6PGJyPiZuYnNwOyAm
bmJzcDsgd2l0aCB1c2luZ19yZXNvdXJjZSh0bXBfcGF0aCkgYXMgcmVzdWx0Ojxicj4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgeWllbGQgcmVzdWx0ICZuYnNwOyAmbmJzcDs8YnI+YGBgPGJy
PjwvZGl2PjxkaXYgcHJvY2Vzc2VkPSJ0cnVlIj48YnI+PC9kaXY+PGRpdiBwcm9jZXNzZWQ9InRy
dWUiPkNoZWVycyw8L2Rpdj48ZGl2IHByb2Nlc3NlZD0idHJ1ZSI+QnJ1bm8uPC9kaXY+PC9kaXY+" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0"></div></div></div>