Pytest中skip和skipif的具體使用方法
skip的用法
使用示例:@pytest.mark.skip(reason=”跳過的原因,會在執行結果中打印”)
標記在測試函數中
舉個🌰
import pytest def test_1(): print("測試用例1") @pytest.mark.skip(reason="沒寫完,不執行此用例") def test_2(): print("測試用例2")
執行結果如下:
標記在測試類的測試用例中
舉個🌰
import pytest class TestCase(object): def test_1(self): print("測試用例1") @pytest.mark.skip(reason="沒寫完,不執行此用例") def test_2(self): print("測試用例2")
執行結果如下
標記在測試類方法上
舉個🌰
import pytest @pytest.mark.skip(reason="沒寫完,不執行此用例") class TestCase1(object): def test_1(self): print("測試用例1") def test_2(self): print("測試用例2") class TestCase2(object): def test_3(self): print("測試用例3") def test_4(self): print("測試用例4")
執行結果如下
總結
- @pytest.mark.skip 可以加在函數上,類上,類方法上
- 如果加在類上面,則類裡面的所有測試用例都不會執行
在測試用例執行期間強制跳過
以一個for循環為例,執行到第3次的時候跳出
import pytest def test_demo(): for i in range(50): print(f"輸出第【{i}】個數") if i == 3: pytest.skip("跑不動瞭,不再執行瞭")
執行結果如下
在模塊級別跳過測試用例
語法:pytest.skip(msg="",allow_module_level=False)
當allow_module_level=True
時,可以設置在模塊級別跳過整個模塊
import pytest pytest.skip("跳過整個模塊", allow_module_level=True) @pytest.fixture(autouse=True) def test_1(): print("執行測試用例1") def test_2(): print("執行測試用例2")
執行結果如下
有條件的跳過某些用例
語法:@pytest.mark.skipif(condition, reason=””)
import sys import pytest @pytest.mark.skipif(sys.platform == 'darwin', reason="does not run on MacOS") class TestSkipIf(object): def test_demo(self): print("不能在MacOS上運行")
註意:condition需要返回True才會跳過
執行結果如下:
跳過標記的使用
- 可以將 pytest.mark.skip 和 pytest.mark.skipif 賦值給一個標記變量
- 在不同模塊之間共享這個標記變量
- 若有多個模塊的測試用例需要用到相同的 skip 或 skipif ,可以用一個單獨的文件去管理這些通用標記,然後適用於整個測試用例集
舉個🌰
import sys import pytest skipmark = pytest.mark.skip(reason="不執行此用例") skipifmark = pytest.mark.skipif(sys.platform == 'darwin', reason="does not run on MacOS") @skipifmark class TestSkipIf(object): def test_demo(self): print("不能在MacOS上運行") @skipmark def test_1(): print("測試用例1") def test_2(): print("測試用例2")
執行結果如下
當缺少某些導入時跳過用例
語法:
pytest.importorskip( modname: str, minversion: Optional[str] = None, reason: Optional[str] = None )
參數:
- modname: 需要被導入的模塊名稱,比如 selenium;
- minversion: 表示需要導入的最小的版本號,如果該版本不達標,將會打印出報錯信息;
- reason: 隻有當模塊沒有被導入時,給定該參數將會顯示出給定的消息內容
找不到對應module
舉個🌰
import pytest rock = pytest.importorskip("rock") @rock def test_1(): print("測試是否導入瞭rock模塊")
運行結果
如果版本不達標
舉個🌰
import pytest sel = pytest.importorskip("selenium", minversion="3.150") @sel def test_1(): print("測試是否導入瞭selenium模塊")
運行結果
整理參考
小菠蘿的測試筆記
到此這篇關於Pytest中skip和skipif的具體使用方法的文章就介紹到這瞭,更多相關skip和skipif的使用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Pytest中skip skipif跳過用例詳解
- python單測框架之pytest常見用法
- Python測試框架pytest高階用法全面詳解
- Pytest如何使用mark的方法
- pytest自動化測試中的fixture的聲明和調用