PyTest之用例忽略

一、直接忽略

由于某些原因,系统存在bug,但该bug修复级别比较低。或者由于需求变更,导致原有的脚本无法成功执行,所以需要跳过用例。而pytest提供了@pytest.mark.skip方法,但是我们推荐@pytest.mark.skip(reason="XXX"),因为它标注了跳过的具体原因,用例可读性更高,有利于脚本的长期维护。

#test_skip.py

import pytest

class TestMyCode:

    @pytest.mark.skip
    def test_skip_01(self):
        pass

    @pytest.mark.skip(reason="因需求变更,忽略用例")
    def test_skip_02(self):
        pass

二、条件忽略

除了一般情况外,还存在不同环境运行的结果可能不同,此时需要跳过一些环境的用例,而pytest提供了@pytest.mark.skipif方法。比如,根据环境的不同,选择跳过用例。如下所示:

#test_skipif.py

import platform
import pytest

class TestMyCode:
    
    @pytest.mark.skipif(platform.system() != "Windows", reason="非windows系统时,用例均跳过")
    def test_skipif(self):
        assert platform.system() == "Windows", platform.system()

另外,当条件表达式分支比较多时,直接在@pytest.mark.skipif方法中写表达式,明显比较冗余,而且不美观,可读性差。此时,pytest支持更优雅的封装方式,如下所示:

#test_skipif.py

import platform
import pytest


def is_windows():
    if platform.system() != "Windows":
        return True
    else:
        return False

only_windows = pytest.mark.skipif(is_windows(),reason="非windows系统时,用例均跳过")

class TestMyCode:
	"""装饰器的方式封装"""

    @only_windows
    def test_skipif_002(self):
        assert platform.system() == "Windows", platform.system()

posted @ 2021-09-29 16:52  xyztank  阅读(383)  评论(0编辑  收藏  举报