summaryrefslogtreecommitdiff
path: root/testing/test_setuponly.py
diff options
context:
space:
mode:
authorDaniel Hahler <git@thequod.de>2019-10-15 00:40:38 +0200
committerDaniel Hahler <git@thequod.de>2019-10-15 00:41:05 +0200
commitc2ae0e0dc631cbcbc8921b79bcdc7740dad33aaf (patch)
tree1d13116e912d49b6c6e519c84f4ab5e48572c8f7 /testing/test_setuponly.py
parentafabbb6346e1b76cf84f367c3198e3313fbef959 (diff)
downloadpytest-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.py269
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*"]
+ )