Pytest - 测试用例执行顺序

all*_*lla 5 qa pytest python-3.x

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

看起来像:

# one.py
import some lib

class Foo():
    def makesmth(self)
        script
Run Code Online (Sandbox Code Playgroud)

然后我制作了测试文件:

# test_one.py
import pytest
import some lib

class TestFoo():
    def test_makesmth(self):
        try/except/else assert etc.
Run Code Online (Sandbox Code Playgroud)

所以它看起来简单而正确。当我运行文件 test_one.py 时一切正常。我的脚本测试包看起来像:

package/
|-- __init__.py
|-- scripts
|   |-- one.py
|   |-- two.py
|-- tests
|   |-- test_one.py
|   |-- test_two.py
Run Code Online (Sandbox Code Playgroud)

当我尝试收集测试时

pytest --collect-only
Run Code Online (Sandbox Code Playgroud)

它给出了非字母顺序和随机的测试顺序。

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

试图制作文件tests.py:

import pytest

from tests.test_one import TestFoo
from tests.test_two import TestBoo etc.
Run Code Online (Sandbox Code Playgroud)

当我试图运行它,显示错误,因为这些进口是在我不明白的方式进行(试图使一个命名为testFoo b TestBoo并重新命名该方法定义的方式测试文件,但仍然是没有按”工作)。

对不起,如果我的问题看起来不专业,我是初级问答,几乎没有自动测试经验。

小智 2

您可以使用 pytest 排序

请参阅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
Run Code Online (Sandbox Code Playgroud)