我有一些包含测试脚本的脚本,我需要按照我明确定义的执行顺序运行这些测试。
它看起来像:
# 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,几乎没有自动测试的经验。
答案 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