2016-06-22 22:45:36 +08:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(params=['--setup-only', '--setup-plan'], scope='module')
|
|
|
|
def mode(request):
|
|
|
|
return request.param
|
|
|
|
|
|
|
|
|
|
|
|
def test_show_only_active_fixtures(testdir, mode):
|
2016-06-22 18:00:45 +08:00
|
|
|
p = testdir.makepyfile('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture
|
|
|
|
def _arg0():
|
|
|
|
"""hidden arg0 fixture"""
|
|
|
|
@pytest.fixture
|
|
|
|
def arg1():
|
|
|
|
"""arg1 docstring"""
|
|
|
|
def test_arg1(arg1):
|
|
|
|
pass
|
|
|
|
''')
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
result = testdir.runpytest(mode, p)
|
2016-06-22 18:00:45 +08:00
|
|
|
assert result.ret == 0
|
|
|
|
|
|
|
|
result.stdout.fnmatch_lines([
|
|
|
|
'*SETUP F arg1*',
|
2016-06-22 19:25:46 +08:00
|
|
|
'*test_arg1 (fixtures used: arg1)',
|
2016-06-22 18:00:45 +08:00
|
|
|
'*TEARDOWN F arg1*',
|
|
|
|
])
|
|
|
|
assert "_arg0" not in result.stdout.str()
|
|
|
|
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
def test_show_different_scopes(testdir, mode):
|
2016-06-22 18:00:45 +08:00
|
|
|
p = testdir.makepyfile('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture
|
|
|
|
def arg_function():
|
|
|
|
"""function scoped fixture"""
|
|
|
|
@pytest.fixture(scope='session')
|
|
|
|
def arg_session():
|
|
|
|
"""session scoped fixture"""
|
|
|
|
def test_arg1(arg_session, arg_function):
|
|
|
|
pass
|
|
|
|
''')
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
result = testdir.runpytest(mode, p)
|
2016-06-22 18:00:45 +08:00
|
|
|
assert result.ret == 0
|
|
|
|
|
|
|
|
result.stdout.fnmatch_lines([
|
|
|
|
'SETUP S arg_session*',
|
|
|
|
'*SETUP F arg_function*',
|
2016-06-22 19:25:46 +08:00
|
|
|
'*test_arg1 (fixtures used: arg_function, arg_session)',
|
2016-06-22 18:00:45 +08:00
|
|
|
'*TEARDOWN F arg_function*',
|
|
|
|
'TEARDOWN S arg_session*',
|
|
|
|
])
|
|
|
|
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
def test_show_nested_fixtures(testdir, mode):
|
2016-06-22 18:00:45 +08:00
|
|
|
testdir.makeconftest('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture(scope='session')
|
|
|
|
def arg_same():
|
|
|
|
"""session scoped fixture"""
|
|
|
|
''')
|
|
|
|
p = testdir.makepyfile('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
def arg_same(arg_same):
|
|
|
|
"""function scoped fixture"""
|
|
|
|
def test_arg1(arg_same):
|
|
|
|
pass
|
|
|
|
''')
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
result = testdir.runpytest(mode, p)
|
2016-06-22 18:00:45 +08:00
|
|
|
assert result.ret == 0
|
|
|
|
|
|
|
|
result.stdout.fnmatch_lines([
|
|
|
|
'SETUP S arg_same*',
|
2016-06-22 19:25:46 +08:00
|
|
|
'*SETUP F arg_same (fixtures used: arg_same)*',
|
|
|
|
'*test_arg1 (fixtures used: arg_same)',
|
2016-06-22 18:00:45 +08:00
|
|
|
'*TEARDOWN F arg_same*',
|
|
|
|
'TEARDOWN S arg_same*',
|
|
|
|
])
|
|
|
|
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
def test_show_fixtures_with_autouse(testdir, mode):
|
2016-06-22 18:00:45 +08:00
|
|
|
p = testdir.makepyfile('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture
|
|
|
|
def arg_function():
|
|
|
|
"""function scoped fixture"""
|
|
|
|
@pytest.fixture(scope='session', autouse=True)
|
|
|
|
def arg_session():
|
|
|
|
"""session scoped fixture"""
|
|
|
|
def test_arg1(arg_function):
|
|
|
|
pass
|
|
|
|
''')
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
result = testdir.runpytest(mode, p)
|
2016-06-22 18:00:45 +08:00
|
|
|
assert result.ret == 0
|
|
|
|
|
|
|
|
result.stdout.fnmatch_lines([
|
|
|
|
'SETUP S arg_session*',
|
|
|
|
'*SETUP F arg_function*',
|
2016-06-22 19:25:46 +08:00
|
|
|
'*test_arg1 (fixtures used: arg_function, arg_session)',
|
2016-06-22 18:00:45 +08:00
|
|
|
])
|
|
|
|
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
def test_show_fixtures_with_parameters(testdir, mode):
|
2016-06-22 18:00:45 +08:00
|
|
|
testdir.makeconftest('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture(scope='session', params=['foo', 'bar'])
|
|
|
|
def arg_same():
|
|
|
|
"""session scoped fixture"""
|
|
|
|
''')
|
|
|
|
p = testdir.makepyfile('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
def arg_other(arg_same):
|
|
|
|
"""function scoped fixture"""
|
|
|
|
def test_arg1(arg_other):
|
|
|
|
pass
|
|
|
|
''')
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
result = testdir.runpytest(mode, p)
|
2016-06-22 18:00:45 +08:00
|
|
|
assert result.ret == 0
|
|
|
|
|
|
|
|
result.stdout.fnmatch_lines([
|
|
|
|
'SETUP S arg_same?foo?',
|
|
|
|
'TEARDOWN S arg_same?foo?',
|
|
|
|
'SETUP S arg_same?bar?',
|
|
|
|
'TEARDOWN S arg_same?bar?',
|
|
|
|
])
|
|
|
|
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
def test_show_fixtures_with_parameter_ids(testdir, mode):
|
2016-06-22 18:00:45 +08:00
|
|
|
testdir.makeconftest('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture(
|
|
|
|
scope='session', params=['foo', 'bar'], ids=['spam', 'ham'])
|
|
|
|
def arg_same():
|
|
|
|
"""session scoped fixture"""
|
|
|
|
''')
|
|
|
|
p = testdir.makepyfile('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
def arg_other(arg_same):
|
|
|
|
"""function scoped fixture"""
|
|
|
|
def test_arg1(arg_other):
|
|
|
|
pass
|
|
|
|
''')
|
|
|
|
|
2016-06-22 22:45:36 +08:00
|
|
|
result = testdir.runpytest(mode, p)
|
2016-06-22 18:00:45 +08:00
|
|
|
assert result.ret == 0
|
|
|
|
|
|
|
|
result.stdout.fnmatch_lines([
|
|
|
|
'SETUP S arg_same?spam?',
|
|
|
|
'SETUP S arg_same?ham?',
|
|
|
|
])
|
2016-06-22 23:24:55 +08:00
|
|
|
|
|
|
|
|
|
|
|
def test_dynamic_fixture_request(testdir):
|
|
|
|
p = testdir.makepyfile('''
|
|
|
|
import pytest
|
|
|
|
@pytest.fixture()
|
|
|
|
def dynamically_requested_fixture():
|
|
|
|
pass
|
|
|
|
@pytest.fixture()
|
|
|
|
def dependent_fixture(request):
|
|
|
|
request.getfuncargvalue('dynamically_requested_fixture')
|
|
|
|
def test_dyn(dependent_fixture):
|
|
|
|
pass
|
|
|
|
''')
|
|
|
|
|
|
|
|
result = testdir.runpytest('--setup-only', p)
|
|
|
|
assert result.ret == 0
|
|
|
|
|
|
|
|
result.stdout.fnmatch_lines([
|
|
|
|
'*SETUP F dynamically_requested_fixture',
|
|
|
|
'*TEARDOWN F dynamically_requested_fixture'
|
|
|
|
])
|