Pytest-测试用例执行顺序

时间:2018-12-21 15:09:46

标签: python-3.x pytest qa

我有一些包含测试脚本的脚本,我需要按照我明确定义的执行顺序运行这些测试。

它看起来像:

# one.py
import some lib

class Foo():
    def makesmth(self)
        script

然后我制作了测试文件:

# test_one.py
import pytest
import some lib

class TestFoo():
    def test_makesmth(self):
        try/except/else assert etc.

因此看起来简单而正确。当我运行文件test_one.py时,一切正常。 我的脚本测试包如下所示:

package/
|-- __init__.py
|-- scripts
|   |-- one.py
|   |-- two.py
|-- tests
|   |-- test_one.py
|   |-- test_two.py

当我尝试收集测试内容时

pytest --collect-only

它给出非字母顺序的测试,只是随机顺序。

我在哪里可以编写有关测试顺序的信息?非字母,就像我想像b,a,c,e,d一样开始测试-而不是随机而不是字母

试图制作文件tests.py:

import pytest

from tests.test_one import TestFoo
from tests.test_two import TestBoo etc.

当我尝试运行此代码时,会显示错误,因为这些导入是按照我不理解的方式完成的(试图使 a TestFoo b TestBoo并以该方法定义方式重命名测试文件,但仍然无法正常工作。

很抱歉,如果我的问题看起来不专业,我是初级Q&A,几乎没有自动测试的经验。

2 个答案:

答案 0 :(得分:3)

Pytest-ordering 目前似乎已被放弃,您还可以查看 pytest-order(原始项目的一个分支)。

import pytest

@pytest.mark.order(2)
def test_foo():
    assert True

@pytest.mark.order(1)
def test_bar():
    assert True

答案 1 :(得分:0)

您可以使用pytest-ordering

请参见https://pytest-ordering.readthedocs.io/en/develop/

import pytest
@pytest.mark.run(order=1)
def test_first():
    pass
@pytest.mark.run(order=2)
def test_second():
    pass

test_sample.py::test_first PASSED
test_sample.py::test_second PASSED