<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>That may be true&#8230; but the only reason I was looking into this is because the test was actually being executed in our nightly Jenkins automation run. I was only using the &#8211;collectonly switch in to avoid running the tests, which take some time to run. The existing issue remains unresolved.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Chris<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Jason Coutu [mailto:jcoutu@vendasta.com] <br><b>Sent:</b> April-08-13 2:53 PM<br><b>To:</b> Pella,Chris<br><b>Cc:</b> testing-in-python@lists.idyll.org<br><b>Subject:</b> Re: [TIP] pytest test collection problem with markers and test parametrization?<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><p class=MsoNormal>Collect all doesn't always report what you expect. &nbsp;When you mark like that, it won't get run, but it still get's collected. When you run it will be &quot;Skipped&quot; &nbsp;run with -rs&nbsp;<o:p></o:p></p><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>Jason&nbsp;<o:p></o:p></p></div></div><div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p>&nbsp;</o:p></p><div><p class=MsoNormal>On Mon, Apr 8, 2013 at 12:38 PM, Pella,Chris &lt;<a href="mailto:Chris.Pella@safenet-inc.com" target="_blank">Chris.Pella@safenet-inc.com</a>&gt; wrote:<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>I asked this question in stackoverflow but didn&#8217;t get any answers, so I&#8217;ll narrowcast it here. </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>We have a marked test that we expect to be not executed because py.test was invoked with another marker, yet the test is getting executed.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>e.g.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:#EEEEEE;vertical-align:baseline'><span style='font-size:10.5pt;font-family:Consolas;color:maroon;border:none windowtext 1.0pt;padding:0cm'>@pytest</span><span style='font-size:10.5pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0cm'>.mark.stress</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:#EEEEEE;vertical-align:baseline'><span style='font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm'>def</span><span style='font-size:10.5pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0cm'> test_one(some_fixture):</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:#EEEEEE;vertical-align:baseline'><span style='font-size:10.5pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0cm'>&nbsp;&nbsp;&nbsp;&nbsp; <span style='color:darkblue'>pass</span></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:#EEEEEE;vertical-align:baseline'><span style='font-size:10.5pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0cm'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:#EEEEEE;vertical-align:baseline'><span style='font-size:10.5pt;font-family:Consolas;color:maroon;border:none windowtext 1.0pt;padding:0cm'>@pytest</span><span style='font-size:10.5pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0cm'>.<a href="http://mark.sa" target="_blank">mark.sa</a></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:#EEEEEE;vertical-align:baseline'><span style='font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm'>def</span><span style='font-size:10.5pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0cm'> test_two(some_fixture):</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:#EEEEEE;vertical-align:baseline'><span style='font-size:10.5pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0cm'>&nbsp;&nbsp;&nbsp;&nbsp; <span style='color:darkblue'>pass</span></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>If we run with pytest &#8211;collectonly &#8211;m &#8220;sa&#8221; it will show that both tests are collected, but we expected test_one to not be collected for execution. The only way to avoid the stress test is by invoking pytest </span><span style='font-size:10.5pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0cm;background:#EEEEEE'>--collectonly -m &#8220;sa and (not stress)</span><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&quot;. &nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>We inspect the original argument list in the pytest_generate_tests hook to grab the markers so we can use the platform (e.g. sa in this case) marker in the fixture to set up the test resources, but otherwise don&#8217;t manipulate the arguments. &nbsp;Is the test parametrization hook below causing pytest to think test_one is marked with the &#8216;sa&#8217; marker? &nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>def pytest_generate_tests(metafunc):</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; &quot;&quot;&quot;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; Generate the parameterization list for the source device</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; based on the markers set in the command line.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; @param metafunc - meta object for a specific function.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; &quot;&quot;&quot;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; source&nbsp;&nbsp;&nbsp; = [ 'unsupported' ]</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;if '-m' in metafunc.config._origargs:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index = metafunc.config._origargs.index('-m')</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; markers = metafunc.config._origargs[index + 1]</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; markers = markers.split(',')</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source = []</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 'sa' in markers:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source.append( 'sa' )</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 'g5' in markers:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source.append( 'g5' )</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 'pci' in markers:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source.append( 'pci' )</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if len(source) == 0:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source = [ 'unsupported' ]</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp; </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;if 'source' in metafunc.funcargnames:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; metafunc.parametrize(&quot;source&quot;, source, indirect=True)</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; if 'rped_source_only' in metafunc.funcargnames:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; metafunc.parametrize(&quot;rped_source_only&quot;, source, indirect=True)</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt;background:white;vertical-align:baseline'><span style='font-size:10.5pt;font-family:"Arial","sans-serif"'>Chris</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-CA>&nbsp;</span><o:p></o:p></p></div></div><pre>The information contained in this electronic mail transmission <o:p></o:p></pre><pre>may be privileged and confidential, and therefore, protected <o:p></o:p></pre><pre>from disclosure. If you have received this communication in <o:p></o:p></pre><pre>error, please notify us immediately by replying to this <o:p></o:p></pre><pre>message and deleting it from your computer without copying <o:p></o:p></pre><pre>or disclosing it.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><p class=MsoNormal style='margin-bottom:12.0pt'><br>_______________________________________________<br>testing-in-python mailing list<br><a href="mailto:testing-in-python@lists.idyll.org">testing-in-python@lists.idyll.org</a><br><a href="http://lists.idyll.org/listinfo/testing-in-python" target="_blank">http://lists.idyll.org/listinfo/testing-in-python</a><o:p></o:p></p></div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></div></div></body></html>
<pre>The information contained in this electronic mail transmission 
may be privileged and confidential, and therefore, protected 
from disclosure. If you have received this communication in 
error, please notify us immediately by replying to this 
message and deleting it from your computer without copying 
or disclosing it.