用例执行顺序
首先我们看一看用例的执行顺序
unitest:ascll的大小决定执行的顺序
pytest:默认按照从上到下进行执行
如果我们想要改变用例的执行顺序能够怎么做呢?
这里介绍一个装饰器@pytest.mark.run(order=x),它的作用就是标记该函数作为第x个执行。上代码看看对比
没用装饰器的时候:
import pytest
class TestLogin:
def test_08(self):
print("你好08")
def test_01(self):
print("你好01")
def test_05(self):
print("你好05")
def test_03(self):
print("你好03")
如果是在unitest里就会先执行test_01然后依次是test_03,test_05,test_08
而在pytest里呢,我们可以看看效果

完全是按照从上到下的顺序进行执行的,那么现在我们加入装饰器试试看
import pytest
class TestLogin:
def test_08(self):
print("你好08")
def test_01(self):
print("你好01")
@pytest.mark.run(order=1)
def test_05(self):
print("你好05")
@pytest.mark.run(order=2)
def test_03(self):
print("你好03")

可以看到这里的顺序就已经变了,按照我标记的进行执行
分组执行用例
在工作中有的时候我们并不需要执行所有用例,所以就会用到分组执行啦。
这里同样也要用到装饰器@pytest.mark
我们可以在上一节讲到的pytest.ini中进行分组的设置也就是
makers = #设置用例的分组
smoke
usermanage
这个设置的作用就是标记用例进行分组
还是上面的代码,如果我不做标记,那么每次执行就会运行全部运行,那么我现在加入标记看看效果
import pytest
class TestLogin:
def test_08(self):
print("你好08")
def test_01(self):
print("你好01")
@pytest.mark.run(order=1)
def test_05(self):
print("你好05")
@pytest.mark.run(order=2)
@pytest.mark.smoke
def test_03(self):
print("你好03")
这里需要注意,运行的时候不可以再输入pytest了哦,需要输入pytest -m '分组名'

我们可以看到这里就只执行了我们所标记的用例,可以看到这里的提示,执行了一条用例,过滤了7条用例。
还有就是多个分组用例运行需要用or进行连接,比如我现在使用两个分组
import pytest
class TestLogin:
def test_08(self):
print("你好08")
def test_01(self):
print("你好01")
@pytest.mark.run(order=1)
@pytest.mark.usermanage
def test_05(self):
print("你好05")
@pytest.mark.run(order=2)
@pytest.mark.smoke
def test_03(self):
print("你好03")
那么我现在有两个分组,我想执行这两个分组就需要在终端输入pytest -m "smoke or usermanage",来看看效果
这样就OK啦,如果说有三个分组,那就再加一个or就好了。