pytest学习笔记04-用例执行顺序及分组执行

用例执行顺序

首先我们看一看用例的执行顺序

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就好了。

posted @ 2021-12-28 00:51  Rookie_C  阅读(767)  评论(0编辑  收藏  举报