В pytest-зависимости есть ли способ выполнить тесты, только если все из нескольких параметризованных тестовых случаев пройдены? - PullRequest
1 голос
/ 02 апреля 2020

У меня есть несколько тестов, запущенных в Pytest, которые зависят от серии тестов, выполняемых в классе. Я использую pytest-зависимость для запуска некоторых других тестов в другом модуле, но только если все тесты в этом классе зависимостей пройдены.

Это набор тестов, которые абсолютно НЕОБХОДИМО пройти, чтобы я мог приступить к остальным тестам. У него есть два метода внутри класса:

@pytest.mark.dependency()
class TestThis:
    """Test steady state of network."""

    @pytest.mark.parametrize("device", params_this)
    def test_that(self, device: str) -> None:
        do something
        assert xyz == abc

    @pytest.mark.parametrize("device", params_that)
    def test_this_as_well(self, device: str) -> None:
        do something
        assert xyz == abc

Теперь, когда я добавляю только один маркер зависимости в последующих тестах, он работает как положено. Если какой-либо из тестов в TestThis :: test_that не пройден, остальные тесты пропускаются.

@pytest.mark.dependency(
    depends=instances(

            "tests/test_xyz.py::TestThis::test_that",
            params_this,
        ),
    scope="session",
)
class TestEverything:
    """Class to test everything."""

Однако, когда я добавляю два маркера зависимости, как показано ниже, тесты выполняются как обычно, даже если один или несколько из тестов в зависимости не удается. Это неожиданное поведение AFAIK.

@pytest.mark.dependency(
    depends=instances(

            "tests/test_xyz.py::TestThis::test_that",
            params_this,
        ),
    scope="session",
)
@pytest.mark.dependency(
    depends=instances(

            "tests/test_xyz.py::TestThis::test_this_as_well",
            params_that,
        ),
    scope="session",
)
class TestEverything:
    """Class to test everything."""

Поиск возможных решений этой проблемы, потому что я не могу объединить два метода зависимости в один для использования остальной частью моего набора тестов.

...