我有一堆在 Pytest 中运行的测试,它们依赖于在一个类中运行的一系列测试。我正在使用 pytest-dependency 在另一个模块中运行其他一些测试,但前提是此依赖类中的所有测试都通过了。
这是我绝对需要通过的一组测试才能继续进行其余的测试。它在类中有两个方法:
@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."""
寻找这个问题的可能解决方案,因为我无法将这两种依赖方法合并为一个以供我的测试套件的其余部分使用。