Pytest 에서 skip skipif 건 너 뛰 기

5938 단어 PythonPytest
머리말
  • pytest.mark.skip 는 일부 플랫폼 에서 실행 할 수 없 는 테스트 기능 을 표시 할 수 있 습 니 다.
  • 또는 실 패 를 원 하 는 테스트 기능 이 특정한 조건 을 만족 시 키 기 위해 일부 테스트 용례 를 실행 합 니 다.그렇지 않 으 면 pytest 는 이 테스트 용례 를 건 너 뛰 어 넘 을 것 입 니 다
  • 실제 흔히 볼 수 있 는 장면:비 윈도 플랫폼 의 윈도 테스트 만 건 너 뛰 거나 현재 사용 할 수 없 는 외부 자원(예 를 들 어 데이터베이스)에 의존 하 는 테스트 를 건 너 뛰 기
  • @pytest.mark.skip
    테스트 용례 를 건 너 뛰 고 선택 할 수 있 는 매개 변수 reason:건 너 뛰 는 이 유 는 실행 결과 에 인쇄 됩 니 다.
    
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    """
    __title__  = 
    __Time__   = 2020/4/9 13:49
    __Author__ =        
    __Blog__   = https://www.cnblogs.com/poloyy/
    """
    import pytest
    
    
    @pytest.fixture(autouse=True)
    def login():
        print("====  ====")
    
    
    def test_case01():
        print("      11111")
    
    
    @pytest.mark.skip(reason="      !!     !!")
    def test_case02():
        print("      22222")
    
    
    class Test1:
    
        def test_1(self):
            print("%%        1111 %%")
    
        @pytest.mark.skip(reason="    ")
        def test_2(self):
            print("%%        2222 %%")
    
    
    @pytest.mark.skip(reason="         ")
    class TestSkip:
        def test_1(self):
            print("%%      %%")
    
    실행 결과

    지식 점
  • @pytest.mark.skip 는 함수,클래스,클래스 방법 에 추가 할 수 있 습 니 다
  • 클래스 에 추가 하면 클래스 안의 모든 테스트 용례 가 실행 되 지 않 습 니 다
  • 이상 의 작은 사례 는 모두 다음 과 같다.전체 테스트 용례 방법 은 실행 을 건 너 뛰 고 테스트 용례 가 실행 되 는 동안 건 너 뛰 고 계속 실행 하지 않 으 려 면?
  • pytest.skip()함수 기초 사용
    역할:테스트 용례 실행 기간 에 강제로 건 너 뛰 고 나머지 내용 을 실행 하지 않 습 니 다.
    유사:Python 의 순환 에서 어떤 조건 을 만족 시 키 면 break 가 순환 을 뛰 어 넘 습 니 다.
    
    def test_function():
        n = 1
        while True:
            print(f"    {n}   ")
            n += 1
            if n == 5:
                pytest.skip("        ")
    
    실행 결과

    pytest.skip(msg="",allow_module_level=False)
    allowmodule_level=True 시 모듈 단계 에서 전체 모듈 건 너 뛰 기 설정 가능
    
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    """
    __title__  = 
    __Time__   = 2020/4/9 13:49
    __Author__ =        
    __Blog__   = https://www.cnblogs.com/poloyy/
    """
    import sys
    import pytest
    
    if sys.platform.startswith("win"):
        pytest.skip("skipping windows-only tests", allow_module_level=True)
    
    
    @pytest.fixture(autouse=True)
    def login():
        print("====  ====")
    
    
    def test_case01():
        print("      11111")
    
    실행 결과
    collecting ...
    Skipped: skipping windows-only tests
    collected 0 items / 1 skipped
    ============================= 1 skipped in 0.15s ==============================
    @pytest.mark.skipif(condition, reason="")
    역할:일부 테스트 용례 를 조건 부 로 건 너 뛰 기 를 바 랍 니 다.
    메모:condition 은 True 로 돌아 가 야 건 너 뛸 수 있 습 니 다.
    
    @pytest.mark.skipif(sys.platform == 'win32', reason="does not run on windows")
    class TestSkipIf(object):
        def test_function(self):
            print("   window   ")
    
    실행 결과
    collecting ... collected 1 item
    07skip_sipif.py::TestSkipIf::test_function SKIPPED                       [100%]
    Skipped: does not run on windows
    ============================= 1 skipped in 0.04s ==============================
    태그 건 너 뛰 기
  • pytest.mark.skip 과 pytest.mark.skipif 를 태그 변수
  • 에 할당 할 수 있 습 니 다.
  • 서로 다른 모듈 간 에 이 태그 변 수 를 공유 합 니 다
  • 여러 모듈 의 테스트 사례 가 같은 skip 이나 skipif 를 사용 해 야 한다 면 하나의 단독 파일 로 이 유 니 버 설 표 시 를 관리 한 다음 전체 테스트 사례 집
  • 에 적용 할 수 있 습 니 다.
    
    #   
    skipmark = pytest.mark.skip(reason="   window   =====")
    skipifmark = pytest.mark.skipif(sys.platform == 'win32', reason="   window      =====")
    
    
    @skipmark
    class TestSkip_Mark(object):
    
        @skipifmark
        def test_function(self):
            print("    ")
    
        def test_def(self):
            print("    ")
    
    
    @skipmark
    def test_skip():
        print("    ")
    
    실행 결과
    collecting ... collected 3 items
    07skip_sipif.py::TestSkip_Mark::test_function SKIPPED                    [ 33%]
    skipped:window 에서 라 라 를 실행 할 수 없습니다====
    07skip_sipif.py::TestSkip_Mark::test_def SKIPPED                         [ 66%]
    skipped:window 에서 실행 할 수 없습니다====
    07skip_sipif.py::test_skip SKIPPED                                       [100%]
    skipped:window 에서 실행 할 수 없습니다====
    ============================= 3 skipped in 0.04s ==============================
    pytest.importorskip( modname: str, minversion: Optional[str] = None, reason: Optional[str] = None )
    역할:일부 가 져 오기 가 부족 하면 모듈 의 모든 테스트 를 건 너 뜁 니 다.
    매개 변수 목록
  • modname:모듈 명
  • minversion:버 전 번호
  • reasone:이 유 를 건 너 뛰 고 기본 값 으로 주지 않 아 도 됩 니 다
  • 
    pexpect = pytest.importorskip("pexpect", minversion="0.3")
    
    
    @pexpect
    def test_import():
        print("test")
    
    실행 결과 1:module 을 찾 지 못 하면
    Skipped: could not import 'pexpect': No module named 'pexpect'
    collected 0 items / 1 skipped
    실행 결과 1:버 전이 대응 하지 않 으 면
    Skipped: module 'sys' has __version__ None, required is: '0.3'
    collected 0 items / 1 skipped
    Pytest 에서 skip skipif 건 너 뛰 기 사례 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 관련 skip skipif 건 너 뛰 기 사례 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기