make_xpass_failure_again_#11498

This commit is contained in:
TanyaAgarwal28 2023-10-12 15:23:39 +05:30
parent c52659458b
commit cf39d1e910
3 changed files with 26 additions and 0 deletions

View File

@ -0,0 +1,4 @@
In order to ensure backward compatibility we cannot go straight from non-strict to strict instead
we have to start by warning if strict was not set to true or false. The warning should indicate that a
future major release of pytest will change the default from False to True and recommend to use
strict=True as default and a plugin for actually flaky tests.

View File

@ -4,6 +4,7 @@ import os
import platform
import sys
import traceback
import warnings
from collections.abc import Mapping
from typing import Generator
from typing import Optional
@ -80,6 +81,14 @@ def pytest_configure(config: Config) -> None:
"raises, and if the test fails in other ways, it will be reported as "
"a true failure. See https://docs.pytest.org/en/stable/reference/reference.html#pytest-mark-xfail",
)
if not config.getini("xfail_strict"):
warnings.warn(
"In a future major release of pytest, the default 'strict' parameter behavior"
"for xfail markers will change from False to True. "
"Consider setting 'xfail_strict = True' in your pytest configuration"
"or use a plugin for handling flaky tests.",
FutureWarning,
)
def evaluate_condition(item: Item, mark: Mark, condition: object) -> Tuple[bool, str]:

View File

@ -326,6 +326,19 @@ class TestXFail:
assert callreport.passed
assert callreport.wasxfail == "this is an xfail"
def test_xfail_xpassed_warning(self, pytester: Pytester) -> None:
p = pytester.makepyfile(
test_one="""
import pytest
@pytest.mark.xfail
def test_that():
assert 1
"""
)
result = pytester.runpytest(p, "-rX")
result.stdout.fnmatch_lines(["*FutureWarning*", "*1 xpassed*"])
assert result.ret == 0
def test_xfail_using_platform(self, pytester: Pytester) -> None:
"""Verify that platform can be used with xfail statements."""
item = pytester.getitem(