[TIP] pytest test collection problem with markers and test parametrization?
Pella,Chris
Chris.Pella at safenet-inc.com
Mon Apr 8 11:38:28 PDT 2013
I asked this question in stackoverflow but didn't get any answers, so I'll narrowcast it here.
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.
e.g.
@pytest.mark.stress
def test_one(some_fixture):
pass
@pytest.mark.sa
def test_two(some_fixture):
pass
If we run with pytest -collectonly -m "sa" 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 --collectonly -m "sa and (not stress)".
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't manipulate the arguments. Is the test parametrization hook below causing pytest to think test_one is marked with the 'sa' marker?
def pytest_generate_tests(metafunc):
"""
Generate the parameterization list for the source device
based on the markers set in the command line.
@param metafunc - meta object for a specific function.
"""
source = [ 'unsupported' ]
if '-m' in metafunc.config._origargs:
index = metafunc.config._origargs.index('-m')
markers = metafunc.config._origargs[index + 1]
markers = markers.split(',')
source = []
if 'sa' in markers:
source.append( 'sa' )
if 'g5' in markers:
source.append( 'g5' )
if 'pci' in markers:
source.append( 'pci' )
if len(source) == 0:
source = [ 'unsupported' ]
if 'source' in metafunc.funcargnames:
metafunc.parametrize("source", source, indirect=True)
if 'rped_source_only' in metafunc.funcargnames:
metafunc.parametrize("rped_source_only", source, indirect=True)
Chris
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/testing-in-python/attachments/20130408/5b8c8054/attachment.htm>
More information about the testing-in-python
mailing list