4.pytest 之 skip 跳過
pytest.mark.skip可以用於標記某些不想執行的測試用例。
建立test_04.py
檔案,內容如下
# filename:test_04.py
import pytest
class TestDemo01():
@pytest.mark.skip(reason='我要跳過')
def test_01(self):
print('\ntest_01方法執行')
assert 1 == 1
def test_02(self):
print('\ntest_02方法執行')
assert 1 == 1
def test_03(self):
print('\ntest_03方法執行')
assert 1 == 1
這樣,被標記的方法test_01
將不會被執行,也可以在程式碼執行過程中直接呼叫pytest.skip(reason)
來強制跳過,我們修改test_02
方法如下
def test_02(self):
if 2 > 1:
pytest.skip("2>1才跳過")
print('\ntest_02方法執行')
assert 1 == 1
執行 pytest -s test_04.py
命令,你會得到如下結果
============================= test session starts =============================
platform win32 -- Python 3.7.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: D:\study\auto-pytest
collected 3 items
test_04.py ss
test_03方法執行
.
======================== 1 passed, 2 skipped in 0.06s =========================
還可以使用pytest.skip(reason, allow_module_level=True)
來跳過整個module,只需要在頂部加入:
if 2>1:
pytest.skip('跳過整個模組',allow_module_level=True)
這樣,只要條件為True,那麼整個模組下的測試用例將不會執行。
skipif
你可以使用skipif來在某些條件下跳過測試。 下面是一個在檢查python的版本是否高於3.6的示例:
class TestDemo01():
@pytest.mark.skipif(sys.version_info > (3, 6), reason='python版本大於3.6就跳過')
def test_01(self):
print('\ntest_01方法執行')
assert 1 == 1
def test_02(self):
print('\ntest_02方法執行')
assert 1 == 1
如果python安裝版本大於3.6,則test_01方法不會執行。
你可以在各個模組中共享skipif標記,比如有下面的模組定義:
import pytest
import sys
maxversion = pytest.mark.skipif(sys.version_info > (3, 6), reason='python版本大於3.6就跳過')
class TestDemo01():
@maxversion
def test_01(self):
print('\ntest_01方法執行')
assert 1 == 1
def test_02(self):
print('\ntest_02方法執行')
assert 1 == 1
使用定義好的maxversion
作為方法裝飾器,則對應的用例將不會執行。
如果其他模組也會用到相同條件的跳過,可以從別的模組匯入,你可以這樣寫
# filename: test_skip.py
from test_04 import maxversion
@maxversion
def test_function():
.....
跳過模組或者class中的所有測試
你可以在class上使用skipif標記:
@pytest.mark.skipif(sys.version_info > (3, 6), reason='python版本大於3.6就跳過')
class TestDemo01():
def test_01(self):
print('test_01被執行')
如果要跳過模組的所有測試功能,可以在全域性級別使用pytestmark名稱
pytestmark = pytest.mark.skipif(sys.version_info > (3, 6), reason='python版本大於3.6就跳過')
相關文章
- sql_slave_skip_counter跳過太多的反應SQL
- skip a transaction in goldengate(跳過一個事務OGG)Go
- MySQL複製跳過錯誤--slave_skip_errors、sql_slave_skip_counter、slave_exec_modeMySqlError
- 【Java 8 新特性】Java Stream 通過skip()方法跳過前N個子元素Java
- 跳躍式索引(Skip Scan Index)的淺析索引Index
- 跳躍式索引(Skip Scan Index)淺析 - 轉索引Index
- 跳躍式索引掃描(index skip scan) [final]索引Index
- oracle impdp的skip_constraint_errors選項跳過唯一約束錯誤OracleAIError
- 5.6 GTID 啟用情況下, 從庫跳過一個事物的方法 sql_slave_skip_counter 失效.SQL
- win10系統通過修改登錄檔開啟加入Skip Ahead跳躍預覽計劃的方法Win10
- win10系統透過修改登錄檔開啟加入Skip Ahead跳躍預覽計劃的方法Win10
- puppeteer安裝過程中出現:Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOA D" env variable to skip download.
- tidb之dm叢集跳過某個事務實踐TiDB
- Activity過渡(跳轉)動畫動畫
- MySQL 跳過同步錯誤MySql
- 微信小遊戲之跳一跳-電腦自動跳躍遊戲
- INDEX SKIP SCANIndex
- win10 如何跳過建立pin win10 如何跳過設定pinWin10
- 關於Oracle 9i 跳躍式索引掃描(Index Skip Scan)的小測試 (轉)Oracle索引Index
- maven 設定跳過測試Maven
- mysql主從跳過錯誤MySql
- slave-skip-errorsError
- skip_unusable_indexesIndex
- 理解index skip scanIndex
- activity之間的跳轉
- SourceTree跳過註冊安裝使用
- 【命令使用】rsync跳過大目錄
- 使用BBED跳過歸檔檔案
- 【INDEX_SS】使用HINT使SQL用索引跳躍掃描(Index Skip Scan)方式快速獲取資料IndexSQL索引
- mysqld --skip-grant-tablesMySql
- sql_slave_skip_counterSQL
- mysql slave錯誤skipMySql
- SELECT ... FOR UPDATE SKIP LOCKED;
- [轉貼]Skip Scan IndexIndex
- SKIP_UNUSABLE_INDEXES InitializationIndex
- skip_unusable_index parameterIndex
- 慎用 skip_unused_indexesIndex
- 關於INDEX SKIP SCANIndex