用例執行順序
首先我們看一看用例的執行順序
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就好了。