pytest 类中测试的执行顺序

eug*_*ene 8 pytest

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

# 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')
Run Code Online (Sandbox Code Playgroud)

test_two 依赖于 test_one,因此执行的顺序很重要,当您将测试分组到类中时,强制执行测试执行顺序的约定是什么?

Dmi*_*rev 6

默认情况下,测试将按照类/模块中定义的顺序执行。在你的情况下:

test_class.py::TestClass::test_one PASSED
test_class.py::TestClass::test_two PASSED
Run Code Online (Sandbox Code Playgroud)

考虑到一般来说,编写相互依赖的测试是一种不好的做法。如果以后的测试并行运行,您将拥有flakiness,或者如果您安装了用于随机测试执行的插件,例如https://pypi.python.org/pypi/pytest-randomly,或者如果您离开项目,其他人将拥有调试突然开始失败的测试。

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