pytest測試用例編寫----跳過測試用例(Skipping Tests)


@pytest.mark.skip(reason='misunderstood the API')
def test_unique_id_1():
    """Calling unique_id() twice should return different numbers."""
    id_1 = tasks.unique_id()
    id_2 = tasks.unique_id()
    assert id_1 != id_2

內置標記skip跳過某個測試

除了上面的方法,還可以使用pytest.skip(reason)在測試運行過程中,跳過單個測試用例或整個模塊:

跳過整個模塊的例子,直接在文件中設置一個條件,當條件滿足時,使用 pytest.skip('xxx', allow_module_level = True)跳過整個模塊,allow_module_level參數必須為True:
if True: pytest.skip('skip all module', allow_module_level = True)

 

 

 

 

@pytest.mark.skipif(tasks.__version__ < '0.2.0',
                    reason='not supported until version 0.2.0')
def test_unique_id_1():
    """Calling unique_id() twice should return different numbers."""
    id_1 = tasks.unique_id()
    id_2 = tasks.unique_id()
    assert id_1 != id_2

內置標記skipif(要給要跳過的測試添加條件)跳過某個測試

注:-rs(reason) 可以查看跳過的原因

 

使用下面方法可以在多個模塊中共享skipif信息:

 

 你還使用以下方法可以跳過一個類:

 

 pytest還繼承了歷史版本中的pytestmark屬性:使用它在某些條件下跳過一個類或者一個模塊的所有測試用例,pytest.mark.skipif()指定跳過條件。

 

 

下面例子中語句pytestmark = pytest.mark,skipif(1 == 1,reason="verigy whether it can skip this module")會起作用,pytest會跳過整個模塊的執行:

 

 執行結果如下,所有用例被跳過:

 

 

 

 

 

 如果你想跳過多個文件或整個目錄,你可以改變pytest的“用例搜索策略”,在配置文件中設置跳過那些文件或目錄

 

 

  還可以使用pytest.importorskip來跳過依賴包不能正常import的模塊:

 

 

 

在不同的情況下,如何在模塊內跳過執行該模塊的方法總結:

 

 

 

@pytest.mark.xfail(tasks.__version__ < '0.2.0',
                   reason='not supported until version 0.2.0')
def test_unique_id_1():
    """Calling unique_id() twice should return different numbers."""
    id_1 = tasks.unique_id()
    id_2 = tasks.unique_id()
    assert id_1 != id_2


@pytest.mark.xfail()
def test_unique_id_is_a_duck():
    """Demonstrate xfail."""
    uid = tasks.unique_id()
    assert uid == 'a duck'


@pytest.mark.xfail()
def test_unique_id_not_a_duck():
    """Demonstrate xpass."""
    uid = tasks.unique_id()
    assert uid != 'a duck'

內置標記xfail(expected to fail)預期會失敗

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM