add an xfail-ed test for a potential future "enabled" parameter to setup functions
This commit is contained in:
parent
fe4ccdff0e
commit
a1c3d60747
|
@ -19,8 +19,10 @@ class FactoryMarker:
|
|||
return function
|
||||
|
||||
class SetupMarker:
|
||||
def __init__(self, scope):
|
||||
def __init__(self, scope, enabled):
|
||||
self.scope = scope
|
||||
self.enabled = enabled
|
||||
|
||||
def __call__(self, function):
|
||||
function._pytestsetup = self
|
||||
return function
|
||||
|
@ -36,14 +38,17 @@ def factory(scope=None, params=None):
|
|||
"""
|
||||
return FactoryMarker(scope, params)
|
||||
|
||||
def setup(scope="function"):
|
||||
def setup(scope="function", enabled=None):
|
||||
""" return a decorator to mark functions as setup functions.
|
||||
|
||||
:arg scope: the scope for which the setup function will be active, one
|
||||
of "function", "class", "module", "session".
|
||||
Defaults to "function".
|
||||
:arg enabled: if a callable is specified, enabled(node) will be called
|
||||
and if it returns a false value this setup function
|
||||
will not be called and its funcargs will not be setup.
|
||||
"""
|
||||
return SetupMarker(scope)
|
||||
return SetupMarker(scope, enabled)
|
||||
|
||||
def cached_property(f):
|
||||
"""returns a cached property that is calculated by function f.
|
||||
|
|
|
@ -1898,6 +1898,32 @@ class TestSetupDiscovery:
|
|||
reprec = testdir.inline_run("-s")
|
||||
reprec.assertoutcome(passed=2)
|
||||
|
||||
@pytest.mark.xfail(reason="'enabled' feature not implemented")
|
||||
def test_setup_enabled_functionnode(self, testdir):
|
||||
testdir.makepyfile("""
|
||||
import pytest
|
||||
|
||||
def enabled(parentnode, markers):
|
||||
return "needsdb" in markers
|
||||
|
||||
@pytest.factory(params=[1,2])
|
||||
def db(request):
|
||||
return request.param
|
||||
|
||||
@pytest.setup(enabled=enabled)
|
||||
def createdb(db):
|
||||
pass
|
||||
|
||||
def test_func1(request):
|
||||
assert "db" not in request.funcargnames
|
||||
|
||||
@pytest.mark.needsdb
|
||||
def test_func2(request):
|
||||
assert "db" in request.funcargnames
|
||||
""")
|
||||
reprec = testdir.inline_run("-s")
|
||||
reprec.assertoutcome(passed=2)
|
||||
|
||||
def test_callables_nocode(self, testdir):
|
||||
"""
|
||||
a imported mock.call would break setup/factory discovery
|
||||
|
|
Loading…
Reference in New Issue