pytest在类中执行测试的顺序

时间:2017-06-28 15:15:36

标签: 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')

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

2 个答案:

答案 0 :(得分:0)

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

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

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

我建议将两个测试组合成一个。重要的是你有一些测试场景。如果您有2个测试,那么这个问题是否重要?如果您对代码仍然有相同的信心,那么它是否重要?

答案 1 :(得分:0)

您可以使用pytest_collection_modifyitems挂钩来根据需要更改订单。