diff options
author | Daniel Hahler <git@thequod.de> | 2019-10-15 00:40:38 +0200 |
---|---|---|
committer | Daniel Hahler <git@thequod.de> | 2019-10-15 00:41:05 +0200 |
commit | c2ae0e0dc631cbcbc8921b79bcdc7740dad33aaf (patch) | |
tree | 1d13116e912d49b6c6e519c84f4ab5e48572c8f7 /testing/test_setuponly.py | |
parent | afabbb6346e1b76cf84f367c3198e3313fbef959 (diff) | |
download | pytest-c2ae0e0dc631cbcbc8921b79bcdc7740dad33aaf.tar.gz |
tests: move tests for setuponly/setupplan
Forgotten in 032ce8baf.
Diffstat (limited to 'testing/test_setuponly.py')
-rw-r--r-- | testing/test_setuponly.py | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/testing/test_setuponly.py b/testing/test_setuponly.py new file mode 100644 index 000000000..6343991ae --- /dev/null +++ b/testing/test_setuponly.py @@ -0,0 +1,269 @@ +import pytest + + +@pytest.fixture(params=["--setup-only", "--setup-plan", "--setup-show"], scope="module") +def mode(request): + return request.param + + +def test_show_only_active_fixtures(testdir, mode, dummy_yaml_custom_test): + testdir.makepyfile( + ''' + import pytest + @pytest.fixture + def _arg0(): + """hidden arg0 fixture""" + @pytest.fixture + def arg1(): + """arg1 docstring""" + def test_arg1(arg1): + pass + ''' + ) + + result = testdir.runpytest(mode) + assert result.ret == 0 + + result.stdout.fnmatch_lines( + ["*SETUP F arg1*", "*test_arg1 (fixtures used: arg1)*", "*TEARDOWN F arg1*"] + ) + result.stdout.no_fnmatch_line("*_arg0*") + + +def test_show_different_scopes(testdir, mode): + 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 + ''' + ) + + result = testdir.runpytest(mode, p) + assert result.ret == 0 + + result.stdout.fnmatch_lines( + [ + "SETUP S arg_session*", + "*SETUP F arg_function*", + "*test_arg1 (fixtures used: arg_function, arg_session)*", + "*TEARDOWN F arg_function*", + "TEARDOWN S arg_session*", + ] + ) + + +def test_show_nested_fixtures(testdir, mode): + 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 + ''' + ) + + result = testdir.runpytest(mode, p) + assert result.ret == 0 + + result.stdout.fnmatch_lines( + [ + "SETUP S arg_same*", + "*SETUP F arg_same (fixtures used: arg_same)*", + "*test_arg1 (fixtures used: arg_same)*", + "*TEARDOWN F arg_same*", + "TEARDOWN S arg_same*", + ] + ) + + +def test_show_fixtures_with_autouse(testdir, mode): + 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 + ''' + ) + + result = testdir.runpytest(mode, p) + assert result.ret == 0 + + result.stdout.fnmatch_lines( + [ + "SETUP S arg_session*", + "*SETUP F arg_function*", + "*test_arg1 (fixtures used: arg_function, arg_session)*", + ] + ) + + +def test_show_fixtures_with_parameters(testdir, mode): + 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 + ''' + ) + + result = testdir.runpytest(mode, p) + 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?", + ] + ) + + +def test_show_fixtures_with_parameter_ids(testdir, mode): + 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 + ''' + ) + + result = testdir.runpytest(mode, p) + assert result.ret == 0 + + result.stdout.fnmatch_lines( + ["SETUP S arg_same?spam?", "SETUP S arg_same?ham?"] + ) + + +def test_show_fixtures_with_parameter_ids_function(testdir, mode): + p = testdir.makepyfile( + """ + import pytest + @pytest.fixture(params=['foo', 'bar'], ids=lambda p: p.upper()) + def foobar(): + pass + def test_foobar(foobar): + pass + """ + ) + + result = testdir.runpytest(mode, p) + assert result.ret == 0 + + result.stdout.fnmatch_lines(["*SETUP F foobar?FOO?", "*SETUP F foobar?BAR?"]) + + +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.getfixturevalue('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", + ] + ) + + +def test_capturing(testdir): + p = testdir.makepyfile( + """ + import pytest, sys + @pytest.fixture() + def one(): + sys.stdout.write('this should be captured') + sys.stderr.write('this should also be captured') + @pytest.fixture() + def two(one): + assert 0 + def test_capturing(two): + pass + """ + ) + + result = testdir.runpytest("--setup-only", p) + result.stdout.fnmatch_lines( + ["this should be captured", "this should also be captured"] + ) + + +def test_show_fixtures_and_execute_test(testdir): + """ Verifies that setups are shown and tests are executed. """ + p = testdir.makepyfile( + """ + import pytest + @pytest.fixture + def arg(): + assert True + def test_arg(arg): + assert False + """ + ) + + result = testdir.runpytest("--setup-show", p) + assert result.ret == 1 + + result.stdout.fnmatch_lines( + ["*SETUP F arg*", "*test_arg (fixtures used: arg)F*", "*TEARDOWN F arg*"] + ) |