我有一些测试,我想重复几次。我尝试了pytest-repeat插件
pip3 install pytest-repeat
import pytest
@pytest.mark.repeat(2)
class TestDemo():
def test_demo1(self):
pass
def test_demo2(self):
pass
这有效
test_class_repeat.py::TestDemo::test_demo1[1/2] PASSED
test_class_repeat.py::TestDemo::test_demo1[2/2] PASSED
test_class_repeat.py::TestDemo::test_demo2[1/2] PASSED
test_class_repeat.py::TestDemo::test_demo2[2/2] PASSED
除了我希望以交错的顺序运行所有测试,然后再次运行所有测试
test_class_repeat.py::TestDemo::test_demo1[1/2] PASSED
test_class_repeat.py::TestDemo::test_demo2[1/2] PASSED
test_class_repeat.py::TestDemo::test_demo1[2/2] PASSED
test_class_repeat.py::TestDemo::test_demo2[2/2] PASSED
有一种简单的方法吗?
答案 0 :(得分:0)
不是一个很干净的解决方案,只是天真地定义了一个测试函数,该函数在跳过定义本身的同时执行交错的测试,并对此重复执行:
import pytest
@pytest.mark.skip(reason='Definition only')
class TestDemo():
def test_demo1(self):
print('In Test 1')
assert 1 == 1
def test_demo2(self):
print('In Test 2')
assert 2 == 2
@pytest.mark.repeat(2)
def test_all():
demo = TestDemo()
demo.test_demo1()
demo.test_demo2()
执行(在jupyter笔记本中)给出:
Test.py::TestDemo::test_demo1 SKIPPED
Test.py::TestDemo::test_demo2 SKIPPED
Test.py::test_all[1/2]
In Test 1
In Test 2
PASSED
TestProject.py::test_all[2/2]
In Test 1
In Test 2
PASSED
侧面说明:如果两个嵌套测试之一未通过test_all
也未通过,那么交错测试是否有希望?
答案 1 :(得分:0)
您可以通过保管箱使用pytest-flakefinder软件包。运行完成后,它将重复测试。
用法:@Input() placeholder: string;
。
答案 2 :(得分:0)
如果函数具有参数,则可以使用pytest.mark.parametrize完成。下面是一个示例。
FROM wurstmeister/kafka:latest