Как определить многопараметрические тесты Xfail в py.test? - PullRequest
0 голосов
/ 03 августа 2020

, если кто-нибудь знает, как справиться со следующей проблемой:

@pytest.mark.parametrize("paramA, paramB", params_variable)
@pytest.mark.parametrize("bool", (True, False))
@pytest.mark.parametrize("size", sizes_variable)
def test_definition(paramA, paramB, boolA, boolB, size):
    assert something

Предположим, результаты тестов могут быть такими:

FAILED test_definition [paramA_1-paramB_2-bool_true -size_4] - AssertionError: assert False

FAILED test_definition [paramA_4-paramB_6-bool_false-size_1] - AssertionError: assert False

Как обернуть указанное c созвездие параметров пометить их как Xfail? Возможно ли это?

Когда я добавляю xfail к некоторым конкретным параметрам c, я помечаю все тестовые случаи с этим параметром как Xfail, но я хочу отметить только определенные c созвездие (в случае выше - всего два случая из множества)

млрд баллов тому, кто решит эту проблему

1 Ответ

0 голосов
/ 03 августа 2020

Если вы знаете комбинации параметров, в которых вы хотите разместить маркер xfail, вы можете добавить маркер в pytest_collection_modifyitems на основе имени функции:

conftest.py

def pytest_collection_modifyitems(config, items):
    for item in items:
        if item.name in ("test_definition[paramA_1-paramB_2-bool_true-size_4]",
                         "test_definition[paramA_4-paramB_6-bool_false-size_1]"):
            item.add_marker("xfail")

Это должно быть сделано в conftest.py в том же каталоге, что и тест, или в каталоге выше.

...