class 中的 pytest 测试执行顺序

pytest execution order of tests in a class

我正在按以下方式编写测试用例。

# content of test_class.py
class TestClass(object):
    def test_one(self):
        x = "this"
        assert 'h' in x

    def test_two(self):
        x = "hello"
        assert hasattr(x, 'check')

test_two 取决于 test_one,因此执行顺序很重要,当您在 class 中对测试进行分组时,强制测试执行顺序的惯例是什么?

默认情况下,测试将按照它们在 class/module 中定义的顺序执行。你的情况:

test_class.py::TestClass::test_one PASSED
test_class.py::TestClass::test_two PASSED

考虑一下,通常编写相互依赖的测试是一种不好的做法。如果后面的测试是 运行 并行,你将有 flakiness,或者如果你安装一个插件来执行随机测试,例如https://pypi.python.org/pypi/pytest-randomly,或者如果您离开项目,其他人将不得不调试可能会突然失败的测试。

我建议将两个测试合二为一。重要的是你有一些测试场景。如果您对代码仍然有相同的信心,那么您进行 2 次测试或 1 次测试是否重要?

您可以使用 pytest_collection_modifyitems 钩子根据需要更改顺序。