1、多重校验:pytest-assume(可用for循环)
def test_Frank(self): pytest.assume(1 == 1) pytest.assume(5 == 2) pytest.assume(3 == 3)
pytest.assume(3 == 3)
即使第二个断言失败了,第三个断言还是会继续执行(相比unittest框架,unittest在第一个断言失败后就停止执行)
2、用例依赖:pytest-dependency
第一种方式:不指定name
import pytest
class TestFrank(object):
@pytest.mark.dependency() #必须存在,否则无法关联
def test_001(self):
assert False
@pytest.mark.dependency(depends=["TestFrank::test_001"])
def test_002(self):
assert True
第二种方式:给函数名重新赋值
class TestFrank(object):
@pytest.mark.dependency(name="a")
def test_001(self):
assert False
@pytest.mark.dependency(depends=["a"])
def test_002(self):
assert True
3、执行顺序:pytest-ordering(还可以对类进行标记,尽量但不要混着用)
#先执行test_b再执行test_a
@pytest.mark.run(order=2)
def test_a(self):
pass
@pytest.mark.run(order=1)
def test_b(self):
pass
4、失败重跑:pytest-rerunfailures(还可以对类进行标记)
#reruns是重跑次数,reruns_delay是间隔时间
@pytest.mark.flaky(reruns=3, reruns_delay=5)
def test_Frank(self):
pass
5、重复执行:pytest-repeat
1、对整个文件的测试用例重复执行:pytest -v test_Frank.py --count=5
2、直接标记某个用例执行多少次(还可以对类进行标记,尽量不要混着用):@pytest.mark.repeat(2)
实际发现重复执行的用例(断言是True),作为其他用例的依赖时,会导致其他用例跳过,用例在统计的时候会把重复执行的次数计算进去
6、标记
参考来源有更多详细的用法:https://www.cnblogs.com/lixy-88428977/p/9697881.html
示例是对单个用例的标记,还可以对类进行标记
'''
命令行执行:pytest -v -m "dev" ,则只会运行标记为dev的用例
命令行执行:pytest -v -m "not dev" ,则会运行没有标记dev的用例
'''
@pytest.mark.dev
def test_a(self):
assert True
@pytest.mark.uat
def test_b(self):
assert True
TestFrank