У меня есть несколько тестов, запущенных в 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."""
Поиск возможных решений этой проблемы, потому что я не могу объединить два метода зависимости в один для использования остальной частью моего набора тестов.