在執行測試用例時,有些用例可能不需要執行,這時可以用skip來跳過用例:
1、skip 始終跳過該測試用例
如下三個用例,標記用例2不執行
import pytest def test_001(): assert 1 == 1 @pytest.mark.skip(reason="此條用例暫不執行") def test_002(): assert 1 == 1 def test_003(): assert 1 == 1
執行 pytest -vrs,結果如下:
如上,使用skip裝飾器標記是跳過測試用例的最簡單方法。
也可以在測試執行或setup期間,通過調用pytest.skip(reason)函數強制跳過該用例:
def test_function(): if not valid_config(): pytest.skip("不支持該配置")
還可以在模塊級別跳過整個模塊:pytest.skip(reason,allow_module_level=True)
import sys import pytest if not sys.platform.startswith("win"): pytest.skip("跳過只支持Windows平台的用例",allow_module_level=True)
2、skipif 指定條件下跳過測試用例
滿足指定條件時則跳過用例的執行,如下當Python版本小於3.9時跳過測試用例
import pytest import sys @pytest.mark.skipif(sys.version_info < (3, 9), reason="需要Python3.9版本以上") def test_002(): assert 1 == 1
注意:skipif方法必須指定reason,否則會報錯
我們還可以定義一個變量,根據變量返回為True或False來判斷是否跳過用例,如下:
import pytest import sys minversion = pytest.mark.skipif( sys.version_info < (3, 9), reason="需要Python3.9版本以上" ) @minversion def test_002(): assert 1 == 1
在另一個文件中還可以導入這個變量來重復引用
from api.test_case import minversion @minversion def test_003(): assert 5 == 5
跳過整個文件的所有測試用例
import pytest import sys # 當前文件下的測試用例需要滿足這個條件才能被執行 pytestmark = pytest.mark.skipif(sys.version_info < (3, 9), reason="需要Python3.9版本以上") def test_001(): assert 1 == 1 def test_002(): assert 8 == 8