Python API 테스트 자동화 프레임워크(9부) 병렬 테스트 실행



헤더 이미지 소스의 로고: Python , Requests , JSON , HTTP , Cerberus Report portal

이것은 Python을 사용하여 API 프레임워크를 빌드하는 방법에 대한 시리즈의 아홉 번째이자 마지막 👋 게시물입니다.

아래에서 이전 부분을 읽을 수 있습니다.










  • 이것은 짧고 달콤한 것입니다 😉

    자동화된 테스트 스위트의 크기가 10개에서 100개, 1000개로 증가함에 따라 자동화된 테스트를 확장하는 유일한 방법은 병렬로 실행하는 것입니다.

    종종 테스트 자동화 엔지니어는 자동화를 수정하는 것이 매우 지루한 작업인 게임에서 너무 늦게 병렬 실행에 대해 생각하기 시작합니다. 직렬 실행에 작동하는 패턴은 때때로 병렬 실행을 차단할 수 있습니다.

    이 문제 공간에 완전히 익숙하지 않고 동시성, 스레드, 프로세스 및 병렬 테스트와 같은 용어가 그리스어처럼 들리더라도 걱정하지 마십시오. 😉 실제로 만나서 스스로 해결하기 전까지는 아무도 모릅니다. 앞으로 이 주제에 대해 더 자세한 블로그를 작성할 것을 약속드립니다. 이 공간을 계속 주시하십시오.

    MIT Open courseware 6.031 course on Software Construction에 있는 이 놀라운 장을 살펴보는 것이 좋습니다.

  • Concurrency
  • Thread safety
  • 또는 Andy Knight
  • 의 유용한 게시물this을 읽습니다.

    다 읽었습니까? 😇

    계속합시다.

    테스트를 병렬로 실행하기 위해 현재 프레임워크를 어떻게 설정할 수 있습니까?

    Pytest는 이 목적을 위해 pytest-xdist이라는 멋진 플러그인을 제공하여 이를 달성하기가 매우 쉽습니다.

    설정



    pipenv를 통해 아래 모듈 설치

    # Install pytest-xdist plugin
    pipenv install pytest-xdist
    pipenv install pytest-xdist"[psutil]"
    
    # Alternatively
    # After switching to example/09_running_tests_in_parallel branch
    pipenv install
    
    


    병렬 실행 🚀



    아래 명령을 실행하여 시스템의 여러 코어에서 사례를 실행하십시오.

    여기서 -n는 테스트를 보낼 CPU의 수를 언급합니다. pytest가 CPU 코어 수에 따라 프로세스 수를 결정하도록 하려면 2, 3 또는 auto와 같은 고정 번호를 지정할 수 있습니다.

    python -m pytest -n auto
    
    


    실행 로그의 알림gw0 [8] / gw1 [8] / gw2 [8] / gw3 [8] / gw4 [8] / gw5 [8]은 pytest-xdist가 테스트를 실행하는 데 사용하는 다른 작업자 프로세스를 나타냅니다.

    platform darwin -- Python 3.8.7, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
    rootdir: /Users/gauravsingh/self/course-api-framework-python, configfile: pytest.ini
    plugins: reportportal-5.0.8, xdist-2.2.1, forked-1.3.0
    gw0 [8] / gw1 [8] / gw2 [8] / gw3 [8] / gw4 [8] / gw5 [8]
    ......F.
    1 failed, 7 passed in 1.63s
    
    


    이와 같은 작은 테스트 스위트의 경우 다중 처리 비용으로 인해 런타임이 길어지지만 충분히 큰 테스트 스위트의 경우 쉽게 상각됩니다.

    커스터마이징



    플래그--dist loadscope를 추가하여 단일 프로세스 내에서 테스트 클래스의 모든 메서드 또는 단일 모듈 내의 모든 사례를 실행하도록 pytest에 지시할 수 있습니다.

    python -m pytest -n auto ./tests --reportportal --dist loadscope
    
    


    Pytest xdist 플러그인은 다음과 같은 많은 유용한 기능을 제공합니다.
  • 박스형 하위 프로세스 내에서 이러한 테스트 실행,
  • 다양한 플랫폼에서,
  • 테스트 실행 등을 위한 고유 ID를 얻습니다.

  • 더 자세히 알고 싶다면 github readme를 시작점으로 자유롭게 확인하세요.

    pytest-dev/pytest-xdist: pytest plugin for distributed testing and loop-on-failures testing modes.

    결론



    이것은 이 긴 시리즈의 마지막 챕터였습니다. 이 글을 올리는 동안 여러분도 저만큼 😏 즐거웠기를 바랍니다.

    솔직히 이것은 많은 개념을 다시 살펴보고 사물에 대한 이해를 명확히 하는 데 도움이 되었습니다. Test automation university에서 전체 과정을 확인하는 것을 잊지 마십시오.

    비디오에서 이러한 모든 개념에 대해 더 깊이 논의했습니다.

    이 게시물이 유용하다고 생각되면 친구나 동료와 공유하고 생각이 있으면 트위터나 댓글에서 기꺼이 채팅하겠습니다. 다음 시간까지. 행복한 테스트 및 코딩. 😄

    좋은 웹페이지 즐겨찾기