前言
安靜以前出去面試的時候遇到過這樣一個問題:你怎么保證你的自動化用例的執行順序,當時安靜的回答是用例通過數字的形式進行標記,因為unittest執行是按照ascII碼的順序執行的,當時回答比較low,那我們看看如果用pytest怎么控制用例的執行順序,
pytest-ordering
pytest-ordering屬于pytest的一個插件,它可以控制pytest的執行順序,
安裝: pip install pytest-ordering
原始碼:https://github.com/ftobia/pytest-ordering
pytest執行順序
pytest的執行順序是根據代碼撰寫的順序進行執行的,
import pytest class Test01(): def test_02(self): print('\n---用例02---') def test_01(self): print('\n---用例01---') def test_03(self): print('\n---用例03---') if __name__ == '__main__': pytest.main(['-vs'])
通過下圖可以看出來,我們執行的順序是先執行了用例2,然后用例1,最后用例3,所以說pytest的執行順序是默認撰寫的順序來執行的,

定制用例執行順序
如果在特定一些自動化中,想要定制用例的操作步驟來執行,這個時候就用到了上面介紹的插件pytest-ordering來執行,具體插件怎么用呢?
這里還是需要前面介紹的mark的方法來執行, @pytest.mark.run(order=X) x:表示執行順序
import pytest class Test01(): @pytest.mark.run(order=3) def test_02(self): print('\n---用例02---') @pytest.mark.run(order=2) def test_01(self): print('\n---用例01---') @pytest.mark.run(order=1) def test_03(self): print('\n---用例03---') if __name__ == '__main__': pytest.main(['-vs'])
通過下圖可以看出來,用例已經按照我們的要求,先執行用例3,在執行用例1,最后執行用例2的方法來的

這里需要注意的是,如果你在那個用例上面沒有添加執行順序要求的話,他會先執行帶有標記的用例,然后根據未標記的用例順序進行執行
import pytest class Test01(): def test_02(self): print('\n---用例02---') @pytest.mark.run(order=2) def test_01(self): print('\n---用例01---') @pytest.mark.run(order=1) def test_03(self): print('\n---用例03---') def test_04(self): print('\n---用例04---') if __name__ == '__main__': pytest.main(['-vs'])
這里執行順序:先執行用例3然后在是用例1,最后按照順利順序執行用例2和用例4,

好了,pytest的用例執行順序,就是這么簡單,只要通過mark的方法進行標記就行了,但是千萬不要忘記了需要安裝插件
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285655.html
標籤:其他
上一篇:測驗計劃和測驗報告
下一篇:介面測驗入門課 帶你進階介面測驗
