proper solution

This commit is contained in:
Gleb Nikonorov 2020-06-04 00:02:18 -04:00
parent 0c1557e79a
commit feeddb9882
3 changed files with 7 additions and 14 deletions

View File

@ -302,7 +302,7 @@ def fillfixtures(function):
def get_direct_param_fixture_func(request): def get_direct_param_fixture_func(request):
return request.param return request.param if hasattr(request, "param") else None
@attr.s(slots=True) @attr.s(slots=True)

View File

@ -37,10 +37,7 @@ def get_empty_parameterset_mark(config, argnames, func):
if requested_mark in ("", None, "skip"): if requested_mark in ("", None, "skip"):
mark = MARK_GEN.skip mark = MARK_GEN.skip
elif requested_mark == "xfail": elif requested_mark == "xfail":
if config.getoption("runxfail", default=False): mark = MARK_GEN.xfail(run=False)
mark = MARK_GEN.skip
else:
mark = MARK_GEN.xfail(run=False)
elif requested_mark == "fail_at_collect": elif requested_mark == "fail_at_collect":
f_name = func.__name__ f_name = func.__name__
_, lineno = getfslineno(func) _, lineno = getfslineno(func)

View File

@ -885,19 +885,15 @@ class TestMarkDecorator:
assert md.kwargs == {"three": 3} assert md.kwargs == {"three": 3}
@pytest.mark.parametrize( @pytest.mark.parametrize("mark", [None, "", "skip", "xfail"])
"mark, addopts", def test_parameterset_for_parametrize_marks(testdir, mark):
[(None, ""), ("", ""), ("skip", ""), ("xfail", ""), ("xfail", "--runxfail")],
)
def test_parameterset_for_parametrize_marks(testdir, mark, addopts):
if mark is not None: if mark is not None:
testdir.makeini( testdir.makeini(
""" """
[pytest] [pytest]
{}={} {}={}
addopts={}
""".format( """.format(
EMPTY_PARAMETERSET_OPTION, mark, addopts EMPTY_PARAMETERSET_OPTION, mark
) )
) )
@ -906,7 +902,7 @@ def test_parameterset_for_parametrize_marks(testdir, mark, addopts):
pytest_configure(config) pytest_configure(config)
result_mark = get_empty_parameterset_mark(config, ["a"], all) result_mark = get_empty_parameterset_mark(config, ["a"], all)
if mark in (None, "") or (mark == "xfail" and addopts == "--runxfail"): if mark in (None, ""):
# normalize to the requested name # normalize to the requested name
mark = "skip" mark = "skip"
assert result_mark.name == mark assert result_mark.name == mark
@ -959,7 +955,7 @@ def test_parameterset_for_fail_at_collect(testdir):
def test_parameterset_for_parametrize_bad_markname(testdir): def test_parameterset_for_parametrize_bad_markname(testdir):
with pytest.raises(pytest.UsageError): with pytest.raises(pytest.UsageError):
test_parameterset_for_parametrize_marks(testdir, "bad", False) test_parameterset_for_parametrize_marks(testdir, "bad")
def test_mark_expressions_no_smear(testdir): def test_mark_expressions_no_smear(testdir):