aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/web-platform-tests/tools/pytest/testing/test_skipping.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wpt/web-platform-tests/tools/pytest/testing/test_skipping.py')
-rw-r--r--tests/wpt/web-platform-tests/tools/pytest/testing/test_skipping.py917
1 files changed, 0 insertions, 917 deletions
diff --git a/tests/wpt/web-platform-tests/tools/pytest/testing/test_skipping.py b/tests/wpt/web-platform-tests/tools/pytest/testing/test_skipping.py
deleted file mode 100644
index 3464974e0c2..00000000000
--- a/tests/wpt/web-platform-tests/tools/pytest/testing/test_skipping.py
+++ /dev/null
@@ -1,917 +0,0 @@
-import pytest
-import sys
-
-from _pytest.skipping import MarkEvaluator, folded_skips, pytest_runtest_setup
-from _pytest.runner import runtestprotocol
-
-
-class TestEvaluator:
- def test_no_marker(self, testdir):
- item = testdir.getitem("def test_func(): pass")
- evalskipif = MarkEvaluator(item, 'skipif')
- assert not evalskipif
- assert not evalskipif.istrue()
-
- def test_marked_no_args(self, testdir):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.xyz
- def test_func():
- pass
- """)
- ev = MarkEvaluator(item, 'xyz')
- assert ev
- assert ev.istrue()
- expl = ev.getexplanation()
- assert expl == ""
- assert not ev.get("run", False)
-
- def test_marked_one_arg(self, testdir):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.xyz("hasattr(os, 'sep')")
- def test_func():
- pass
- """)
- ev = MarkEvaluator(item, 'xyz')
- assert ev
- assert ev.istrue()
- expl = ev.getexplanation()
- assert expl == "condition: hasattr(os, 'sep')"
-
- @pytest.mark.skipif('sys.version_info[0] >= 3')
- def test_marked_one_arg_unicode(self, testdir):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.xyz(u"hasattr(os, 'sep')")
- def test_func():
- pass
- """)
- ev = MarkEvaluator(item, 'xyz')
- assert ev
- assert ev.istrue()
- expl = ev.getexplanation()
- assert expl == "condition: hasattr(os, 'sep')"
-
- def test_marked_one_arg_with_reason(self, testdir):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.xyz("hasattr(os, 'sep')", attr=2, reason="hello world")
- def test_func():
- pass
- """)
- ev = MarkEvaluator(item, 'xyz')
- assert ev
- assert ev.istrue()
- expl = ev.getexplanation()
- assert expl == "hello world"
- assert ev.get("attr") == 2
-
- def test_marked_one_arg_twice(self, testdir):
- lines = [
- '''@pytest.mark.skipif("not hasattr(os, 'murks')")''',
- '''@pytest.mark.skipif("hasattr(os, 'murks')")'''
- ]
- for i in range(0, 2):
- item = testdir.getitem("""
- import pytest
- %s
- %s
- def test_func():
- pass
- """ % (lines[i], lines[(i+1) %2]))
- ev = MarkEvaluator(item, 'skipif')
- assert ev
- assert ev.istrue()
- expl = ev.getexplanation()
- assert expl == "condition: not hasattr(os, 'murks')"
-
- def test_marked_one_arg_twice2(self, testdir):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.skipif("hasattr(os, 'murks')")
- @pytest.mark.skipif("not hasattr(os, 'murks')")
- def test_func():
- pass
- """)
- ev = MarkEvaluator(item, 'skipif')
- assert ev
- assert ev.istrue()
- expl = ev.getexplanation()
- assert expl == "condition: not hasattr(os, 'murks')"
-
- def test_marked_skip_with_not_string(self, testdir):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.skipif(False)
- def test_func():
- pass
- """)
- ev = MarkEvaluator(item, 'skipif')
- exc = pytest.raises(pytest.fail.Exception, ev.istrue)
- assert """Failed: you need to specify reason=STRING when using booleans as conditions.""" in exc.value.msg
-
- def test_skipif_class(self, testdir):
- item, = testdir.getitems("""
- import pytest
- class TestClass:
- pytestmark = pytest.mark.skipif("config._hackxyz")
- def test_func(self):
- pass
- """)
- item.config._hackxyz = 3
- ev = MarkEvaluator(item, 'skipif')
- assert ev.istrue()
- expl = ev.getexplanation()
- assert expl == "condition: config._hackxyz"
-
-
-class TestXFail:
-
- @pytest.mark.parametrize('strict', [True, False])
- def test_xfail_simple(self, testdir, strict):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.xfail(strict=%s)
- def test_func():
- assert 0
- """ % strict)
- reports = runtestprotocol(item, log=False)
- assert len(reports) == 3
- callreport = reports[1]
- assert callreport.skipped
- assert callreport.wasxfail == ""
-
- def test_xfail_xpassed(self, testdir):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.xfail
- def test_func():
- assert 1
- """)
- reports = runtestprotocol(item, log=False)
- assert len(reports) == 3
- callreport = reports[1]
- assert callreport.failed
- assert callreport.wasxfail == ""
-
- def test_xfail_run_anyway(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.xfail
- def test_func():
- assert 0
- def test_func2():
- pytest.xfail("hello")
- """)
- result = testdir.runpytest("--runxfail")
- result.stdout.fnmatch_lines([
- "*def test_func():*",
- "*assert 0*",
- "*1 failed*1 pass*",
- ])
-
- def test_xfail_evalfalse_but_fails(self, testdir):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.xfail('False')
- def test_func():
- assert 0
- """)
- reports = runtestprotocol(item, log=False)
- callreport = reports[1]
- assert callreport.failed
- assert not hasattr(callreport, "wasxfail")
- assert 'xfail' in callreport.keywords
-
- def test_xfail_not_report_default(self, testdir):
- p = testdir.makepyfile(test_one="""
- import pytest
- @pytest.mark.xfail
- def test_this():
- assert 0
- """)
- testdir.runpytest(p, '-v')
- #result.stdout.fnmatch_lines([
- # "*HINT*use*-r*"
- #])
-
- def test_xfail_not_run_xfail_reporting(self, testdir):
- p = testdir.makepyfile(test_one="""
- import pytest
- @pytest.mark.xfail(run=False, reason="noway")
- def test_this():
- assert 0
- @pytest.mark.xfail("True", run=False)
- def test_this_true():
- assert 0
- @pytest.mark.xfail("False", run=False, reason="huh")
- def test_this_false():
- assert 1
- """)
- result = testdir.runpytest(p, '--report=xfailed', )
- result.stdout.fnmatch_lines([
- "*test_one*test_this*",
- "*NOTRUN*noway",
- "*test_one*test_this_true*",
- "*NOTRUN*condition:*True*",
- "*1 passed*",
- ])
-
- def test_xfail_not_run_no_setup_run(self, testdir):
- p = testdir.makepyfile(test_one="""
- import pytest
- @pytest.mark.xfail(run=False, reason="hello")
- def test_this():
- assert 0
- def setup_module(mod):
- raise ValueError(42)
- """)
- result = testdir.runpytest(p, '--report=xfailed', )
- result.stdout.fnmatch_lines([
- "*test_one*test_this*",
- "*NOTRUN*hello",
- "*1 xfailed*",
- ])
-
- def test_xfail_xpass(self, testdir):
- p = testdir.makepyfile(test_one="""
- import pytest
- @pytest.mark.xfail
- def test_that():
- assert 1
- """)
- result = testdir.runpytest(p, '-rX')
- result.stdout.fnmatch_lines([
- "*XPASS*test_that*",
- "*1 xpassed*"
- ])
- assert result.ret == 0
-
- def test_xfail_imperative(self, testdir):
- p = testdir.makepyfile("""
- import pytest
- def test_this():
- pytest.xfail("hello")
- """)
- result = testdir.runpytest(p)
- result.stdout.fnmatch_lines([
- "*1 xfailed*",
- ])
- result = testdir.runpytest(p, "-rx")
- result.stdout.fnmatch_lines([
- "*XFAIL*test_this*",
- "*reason:*hello*",
- ])
- result = testdir.runpytest(p, "--runxfail")
- result.stdout.fnmatch_lines("*1 pass*")
-
- def test_xfail_imperative_in_setup_function(self, testdir):
- p = testdir.makepyfile("""
- import pytest
- def setup_function(function):
- pytest.xfail("hello")
-
- def test_this():
- assert 0
- """)
- result = testdir.runpytest(p)
- result.stdout.fnmatch_lines([
- "*1 xfailed*",
- ])
- result = testdir.runpytest(p, "-rx")
- result.stdout.fnmatch_lines([
- "*XFAIL*test_this*",
- "*reason:*hello*",
- ])
- result = testdir.runpytest(p, "--runxfail")
- result.stdout.fnmatch_lines("""
- *def test_this*
- *1 fail*
- """)
-
- def xtest_dynamic_xfail_set_during_setup(self, testdir):
- p = testdir.makepyfile("""
- import pytest
- def setup_function(function):
- pytest.mark.xfail(function)
- def test_this():
- assert 0
- def test_that():
- assert 1
- """)
- result = testdir.runpytest(p, '-rxX')
- result.stdout.fnmatch_lines([
- "*XFAIL*test_this*",
- "*XPASS*test_that*",
- ])
-
- def test_dynamic_xfail_no_run(self, testdir):
- p = testdir.makepyfile("""
- import pytest
- def pytest_funcarg__arg(request):
- request.applymarker(pytest.mark.xfail(run=False))
- def test_this(arg):
- assert 0
- """)
- result = testdir.runpytest(p, '-rxX')
- result.stdout.fnmatch_lines([
- "*XFAIL*test_this*",
- "*NOTRUN*",
- ])
-
- def test_dynamic_xfail_set_during_funcarg_setup(self, testdir):
- p = testdir.makepyfile("""
- import pytest
- def pytest_funcarg__arg(request):
- request.applymarker(pytest.mark.xfail)
- def test_this2(arg):
- assert 0
- """)
- result = testdir.runpytest(p)
- result.stdout.fnmatch_lines([
- "*1 xfailed*",
- ])
-
-
- @pytest.mark.parametrize('expected, actual, matchline',
- [('TypeError', 'TypeError', "*1 xfailed*"),
- ('(AttributeError, TypeError)', 'TypeError', "*1 xfailed*"),
- ('TypeError', 'IndexError', "*1 failed*"),
- ('(AttributeError, TypeError)', 'IndexError', "*1 failed*"),
- ])
- def test_xfail_raises(self, expected, actual, matchline, testdir):
- p = testdir.makepyfile("""
- import pytest
- @pytest.mark.xfail(raises=%s)
- def test_raises():
- raise %s()
- """ % (expected, actual))
- result = testdir.runpytest(p)
- result.stdout.fnmatch_lines([
- matchline,
- ])
-
- def test_strict_sanity(self, testdir):
- """sanity check for xfail(strict=True): a failing test should behave
- exactly like a normal xfail.
- """
- p = testdir.makepyfile("""
- import pytest
- @pytest.mark.xfail(reason='unsupported feature', strict=True)
- def test_foo():
- assert 0
- """)
- result = testdir.runpytest(p, '-rxX')
- result.stdout.fnmatch_lines([
- '*XFAIL*',
- '*unsupported feature*',
- ])
- assert result.ret == 0
-
- @pytest.mark.parametrize('strict', [True, False])
- def test_strict_xfail(self, testdir, strict):
- p = testdir.makepyfile("""
- import pytest
-
- @pytest.mark.xfail(reason='unsupported feature', strict=%s)
- def test_foo():
- with open('foo_executed', 'w'): pass # make sure test executes
- """ % strict)
- result = testdir.runpytest(p, '-rxX')
- if strict:
- result.stdout.fnmatch_lines([
- '*test_foo*',
- '*XPASS(strict)*unsupported feature*',
- ])
- else:
- result.stdout.fnmatch_lines([
- '*test_strict_xfail*',
- 'XPASS test_strict_xfail.py::test_foo unsupported feature',
- ])
- assert result.ret == (1 if strict else 0)
- assert testdir.tmpdir.join('foo_executed').isfile()
-
- @pytest.mark.parametrize('strict', [True, False])
- def test_strict_xfail_condition(self, testdir, strict):
- p = testdir.makepyfile("""
- import pytest
-
- @pytest.mark.xfail(False, reason='unsupported feature', strict=%s)
- def test_foo():
- pass
- """ % strict)
- result = testdir.runpytest(p, '-rxX')
- result.stdout.fnmatch_lines('*1 passed*')
- assert result.ret == 0
-
- @pytest.mark.parametrize('strict_val', ['true', 'false'])
- def test_strict_xfail_default_from_file(self, testdir, strict_val):
- testdir.makeini('''
- [pytest]
- xfail_strict = %s
- ''' % strict_val)
- p = testdir.makepyfile("""
- import pytest
- @pytest.mark.xfail(reason='unsupported feature')
- def test_foo():
- pass
- """)
- result = testdir.runpytest(p, '-rxX')
- strict = strict_val == 'true'
- result.stdout.fnmatch_lines('*1 failed*' if strict else '*1 xpassed*')
- assert result.ret == (1 if strict else 0)
-
-
-class TestXFailwithSetupTeardown:
- def test_failing_setup_issue9(self, testdir):
- testdir.makepyfile("""
- import pytest
- def setup_function(func):
- assert 0
-
- @pytest.mark.xfail
- def test_func():
- pass
- """)
- result = testdir.runpytest()
- result.stdout.fnmatch_lines([
- "*1 xfail*",
- ])
-
- def test_failing_teardown_issue9(self, testdir):
- testdir.makepyfile("""
- import pytest
- def teardown_function(func):
- assert 0
-
- @pytest.mark.xfail
- def test_func():
- pass
- """)
- result = testdir.runpytest()
- result.stdout.fnmatch_lines([
- "*1 xfail*",
- ])
-
-
-class TestSkip:
- def test_skip_class(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skip
- class TestSomething(object):
- def test_foo(self):
- pass
- def test_bar(self):
- pass
-
- def test_baz():
- pass
- """)
- rec = testdir.inline_run()
- rec.assertoutcome(skipped=2, passed=1)
-
- def test_skips_on_false_string(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skip('False')
- def test_foo():
- pass
- """)
- rec = testdir.inline_run()
- rec.assertoutcome(skipped=1)
-
- def test_arg_as_reason(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skip('testing stuff')
- def test_bar():
- pass
- """)
- result = testdir.runpytest('-rs')
- result.stdout.fnmatch_lines([
- "*testing stuff*",
- "*1 skipped*",
- ])
-
- def test_skip_no_reason(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skip
- def test_foo():
- pass
- """)
- result = testdir.runpytest('-rs')
- result.stdout.fnmatch_lines([
- "*unconditional skip*",
- "*1 skipped*",
- ])
-
- def test_skip_with_reason(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skip(reason="for lolz")
- def test_bar():
- pass
- """)
- result = testdir.runpytest('-rs')
- result.stdout.fnmatch_lines([
- "*for lolz*",
- "*1 skipped*",
- ])
-
- def test_only_skips_marked_test(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skip
- def test_foo():
- pass
- @pytest.mark.skip(reason="nothing in particular")
- def test_bar():
- pass
- def test_baz():
- assert True
- """)
- result = testdir.runpytest('-rs')
- result.stdout.fnmatch_lines([
- "*nothing in particular*",
- "*1 passed*2 skipped*",
- ])
-
-class TestSkipif:
- def test_skipif_conditional(self, testdir):
- item = testdir.getitem("""
- import pytest
- @pytest.mark.skipif("hasattr(os, 'sep')")
- def test_func():
- pass
- """) # noqa
- x = pytest.raises(pytest.skip.Exception, lambda:
- pytest_runtest_setup(item))
- assert x.value.msg == "condition: hasattr(os, 'sep')"
-
- @pytest.mark.parametrize('params', [
- '"hasattr(sys, \'platform\')"',
- 'True, reason="invalid platform"',
- ])
- def test_skipif_reporting(self, testdir, params):
- p = testdir.makepyfile(test_foo="""
- import pytest
- @pytest.mark.skipif(%(params)s)
- def test_that():
- assert 0
- """ % dict(params=params))
- result = testdir.runpytest(p, '-s', '-rs')
- result.stdout.fnmatch_lines([
- "*SKIP*1*test_foo.py*platform*",
- "*1 skipped*"
- ])
- assert result.ret == 0
-
- @pytest.mark.parametrize('marker, msg1, msg2', [
- ('skipif', 'SKIP', 'skipped'),
- ('xfail', 'XPASS', 'xpassed'),
- ])
- def test_skipif_reporting_multiple(self, testdir, marker, msg1, msg2):
- testdir.makepyfile(test_foo="""
- import pytest
- @pytest.mark.{marker}(False, reason='first_condition')
- @pytest.mark.{marker}(True, reason='second_condition')
- def test_foobar():
- assert 1
- """.format(marker=marker))
- result = testdir.runpytest('-s', '-rsxX')
- result.stdout.fnmatch_lines([
- "*{msg1}*test_foo.py*second_condition*".format(msg1=msg1),
- "*1 {msg2}*".format(msg2=msg2),
- ])
- assert result.ret == 0
-
-
-def test_skip_not_report_default(testdir):
- p = testdir.makepyfile(test_one="""
- import pytest
- def test_this():
- pytest.skip("hello")
- """)
- result = testdir.runpytest(p, '-v')
- result.stdout.fnmatch_lines([
- #"*HINT*use*-r*",
- "*1 skipped*",
- ])
-
-
-def test_skipif_class(testdir):
- p = testdir.makepyfile("""
- import pytest
-
- class TestClass:
- pytestmark = pytest.mark.skipif("True")
- def test_that(self):
- assert 0
- def test_though(self):
- assert 0
- """)
- result = testdir.runpytest(p)
- result.stdout.fnmatch_lines([
- "*2 skipped*"
- ])
-
-
-def test_skip_reasons_folding():
- path = 'xyz'
- lineno = 3
- message = "justso"
- longrepr = (path, lineno, message)
-
- class X:
- pass
- ev1 = X()
- ev1.when = "execute"
- ev1.skipped = True
- ev1.longrepr = longrepr
-
- ev2 = X()
- ev2.longrepr = longrepr
- ev2.skipped = True
-
- l = folded_skips([ev1, ev2])
- assert len(l) == 1
- num, fspath, lineno, reason = l[0]
- assert num == 2
- assert fspath == path
- assert lineno == lineno
- assert reason == message
-
-def test_skipped_reasons_functional(testdir):
- testdir.makepyfile(
- test_one="""
- from conftest import doskip
- def setup_function(func):
- doskip()
- def test_func():
- pass
- class TestClass:
- def test_method(self):
- doskip()
- """,
- test_two = """
- from conftest import doskip
- doskip()
- """,
- conftest = """
- import pytest
- def doskip():
- pytest.skip('test')
- """
- )
- result = testdir.runpytest('--report=skipped')
- result.stdout.fnmatch_lines([
- "*SKIP*3*conftest.py:3: test",
- ])
- assert result.ret == 0
-
-def test_reportchars(testdir):
- testdir.makepyfile("""
- import pytest
- def test_1():
- assert 0
- @pytest.mark.xfail
- def test_2():
- assert 0
- @pytest.mark.xfail
- def test_3():
- pass
- def test_4():
- pytest.skip("four")
- """)
- result = testdir.runpytest("-rfxXs")
- result.stdout.fnmatch_lines([
- "FAIL*test_1*",
- "XFAIL*test_2*",
- "XPASS*test_3*",
- "SKIP*four*",
- ])
-
-def test_reportchars_error(testdir):
- testdir.makepyfile(
- conftest="""
- def pytest_runtest_teardown():
- assert 0
- """,
- test_simple="""
- def test_foo():
- pass
- """)
- result = testdir.runpytest('-rE')
- result.stdout.fnmatch_lines([
- 'ERROR*test_foo*',
- ])
-
-def test_reportchars_all(testdir):
- testdir.makepyfile("""
- import pytest
- def test_1():
- assert 0
- @pytest.mark.xfail
- def test_2():
- assert 0
- @pytest.mark.xfail
- def test_3():
- pass
- def test_4():
- pytest.skip("four")
- """)
- result = testdir.runpytest("-ra")
- result.stdout.fnmatch_lines([
- "FAIL*test_1*",
- "SKIP*four*",
- "XFAIL*test_2*",
- "XPASS*test_3*",
- ])
-
-def test_reportchars_all_error(testdir):
- testdir.makepyfile(
- conftest="""
- def pytest_runtest_teardown():
- assert 0
- """,
- test_simple="""
- def test_foo():
- pass
- """)
- result = testdir.runpytest('-ra')
- result.stdout.fnmatch_lines([
- 'ERROR*test_foo*',
- ])
-
-@pytest.mark.xfail("hasattr(sys, 'pypy_version_info')")
-def test_errors_in_xfail_skip_expressions(testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skipif("asd")
- def test_nameerror():
- pass
- @pytest.mark.xfail("syntax error")
- def test_syntax():
- pass
-
- def test_func():
- pass
- """)
- result = testdir.runpytest()
- markline = " ^"
- if sys.platform.startswith("java"):
- # XXX report this to java
- markline = "*" + markline[8:]
- result.stdout.fnmatch_lines([
- "*ERROR*test_nameerror*",
- "*evaluating*skipif*expression*",
- "*asd*",
- "*ERROR*test_syntax*",
- "*evaluating*xfail*expression*",
- " syntax error",
- markline,
- "SyntaxError: invalid syntax",
- "*1 pass*2 error*",
- ])
-
-def test_xfail_skipif_with_globals(testdir):
- testdir.makepyfile("""
- import pytest
- x = 3
- @pytest.mark.skipif("x == 3")
- def test_skip1():
- pass
- @pytest.mark.xfail("x == 3")
- def test_boolean():
- assert 0
- """)
- result = testdir.runpytest("-rsx")
- result.stdout.fnmatch_lines([
- "*SKIP*x == 3*",
- "*XFAIL*test_boolean*",
- "*x == 3*",
- ])
-
-def test_direct_gives_error(testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skipif(True)
- def test_skip1():
- pass
- """)
- result = testdir.runpytest()
- result.stdout.fnmatch_lines([
- "*1 error*",
- ])
-
-
-def test_default_markers(testdir):
- result = testdir.runpytest("--markers")
- result.stdout.fnmatch_lines([
- "*skipif(*condition)*skip*",
- "*xfail(*condition, reason=None, run=True, raises=None)*expected failure*",
- ])
-
-def test_xfail_test_setup_exception(testdir):
- testdir.makeconftest("""
- def pytest_runtest_setup():
- 0 / 0
- """)
- p = testdir.makepyfile("""
- import pytest
- @pytest.mark.xfail
- def test_func():
- assert 0
- """)
- result = testdir.runpytest(p)
- assert result.ret == 0
- assert 'xfailed' in result.stdout.str()
- assert 'xpassed' not in result.stdout.str()
-
-def test_imperativeskip_on_xfail_test(testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.xfail
- def test_that_fails():
- assert 0
-
- @pytest.mark.skipif("True")
- def test_hello():
- pass
- """)
- testdir.makeconftest("""
- import pytest
- def pytest_runtest_setup(item):
- pytest.skip("abc")
- """)
- result = testdir.runpytest("-rsxX")
- result.stdout.fnmatch_lines_random("""
- *SKIP*abc*
- *SKIP*condition: True*
- *2 skipped*
- """)
-
-class TestBooleanCondition:
- def test_skipif(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skipif(True, reason="True123")
- def test_func1():
- pass
- @pytest.mark.skipif(False, reason="True123")
- def test_func2():
- pass
- """)
- result = testdir.runpytest()
- result.stdout.fnmatch_lines("""
- *1 passed*1 skipped*
- """)
-
- def test_skipif_noreason(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.skipif(True)
- def test_func():
- pass
- """)
- result = testdir.runpytest("-rs")
- result.stdout.fnmatch_lines("""
- *1 error*
- """)
-
- def test_xfail(self, testdir):
- testdir.makepyfile("""
- import pytest
- @pytest.mark.xfail(True, reason="True123")
- def test_func():
- assert 0
- """)
- result = testdir.runpytest("-rxs")
- result.stdout.fnmatch_lines("""
- *XFAIL*
- *True123*
- *1 xfail*
- """)
-
-
-def test_xfail_item(testdir):
- # Ensure pytest.xfail works with non-Python Item
- testdir.makeconftest("""
- import pytest
-
- class MyItem(pytest.Item):
- nodeid = 'foo'
- def runtest(self):
- pytest.xfail("Expected Failure")
-
- def pytest_collect_file(path, parent):
- return MyItem("foo", parent)
- """)
- result = testdir.inline_run()
- passed, skipped, failed = result.listoutcomes()
- assert not failed
- xfailed = [r for r in skipped if hasattr(r, 'wasxfail')]
- assert xfailed