跳过用例:@pytest.mark.skip @pytest.mark.skipif
    skip和skipif可以标记希望跳过的测试用例。要给跳过的测试添加理由和条件,应当使用skipif。
    区别:
    skip和skipf区别:skip无条件跳过;skipif有条件的跳过

    1. import pytest
    2. @pytest.mark.skip(reason="test11暂不执行")
    3. def test_11():
    4. print("正在执行测试用例-------test_11")
    5. a = ['a','b','c',1,2,3]
    6. b = 'a'
    7. assert b in a
    8. @pytest.mark.skipif(2>1,reason="因为2>1成立所以暂不执行")
    9. def test_12():
    10. print("正在执行测试用例-------test_12")
    11. x = 'a'
    12. y = 'b'
    13. assert x != y
    14. def test_13():
    15. print("正在执行测试用例-------test_13")
    16. assert 3>2
    17. print("assert后执行")
    18. def test_14():
    19. print("正在执行测试用例-------test_14")
    20. assert 1>2
    21. print("assert后执行")
    22. def test_15():
    23. print("正在执行测试用例-------test_15")
    24. pytest.assume(2>=2)
    25. pytest.assume('a'=='a')
    26. pytest.assume(2 in [1,2,3,4])
    27. pytest.assume( 1 != 2)
    28. print("assert后执行")

    执行结果:

    test_mod5.py::test_11 SKIPPED (test11暂不执行)
    test_mod5.py::test_12 SKIPPED (因为2>1成立所以暂不执行)
    test_mod5.py::test_13 正在执行测试用例-------test_13
    assert后执行
    PASSED
    test_mod5.py::test_14 正在执行测试用例-------test_14
    FAILED
    test_mod5.py::test_15 正在执行测试用例-------test_15
    assert后执行
    PASSED
    
    ======================================================================================== FAILURES ========================================================================================
    ________________________________________________________________________________________ test_14 _________________________________________________________________________________________
    
        def test_14():
            print("正在执行测试用例-------test_14")
    >       assert 1>2
    E    assert 1 > 2
    
    test_mod5.py:24: AssertionError
    ================================================================================ short test summary info =================================================================================
    FAILED test_mod5.py::test_14 - assert 1 > 2
    ========================================================================= 1 failed, 2 passed, 2 skipped in 0.39s =========================================================================
    

    可以将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量单独封装成一个模块在不同模块之间导入以达到集中管理这些通用标记的目的,然后适用于整个测试用例集

    # mark_skip.py
    import sys
    import pytest
    
    skip_by_versions = pytest.mark.skip(reason="xxx版本暂不执行")
    skip_by_platform = pytest.mark.skipif(sys.platform=='win32',reason=f"{sys.platform}平台暂不执行")
    
    # test_mod5.py
    import pytest
    from mark_skip import *
    
    @skip_by_versions
    def test_11():
        print("正在执行测试用例-------test_11")
        a = ['a','b','c',1,2,3]
        b = 'a'
        assert b in a
    
    @skip_by_platform
    def test_12():
        print("正在执行测试用例-------test_12")
        x = 'a'
        y = 'b'
        assert x != y
    
    def test_13():
        print("正在执行测试用例-------test_13")
        assert 3>2
        print("assert后执行")
    
    @skip_by_versions
    def test_14():
        print("正在执行测试用例-------test_14")
        assert 1>2
        print("assert后执行")
    
    def test_15():
        print("正在执行测试用例-------test_15")
        pytest.assume(2>=2)
        pytest.assume('a'=='a')
        pytest.assume(2 in [1,2,3,4])
        pytest.assume( 1 != 2)
        print("assert后执行")