>백엔드 개발 >파이썬 튜토리얼 ># Jest에서 Pytest까지: JavaScript 개발자의 Python 테스트 여정

# Jest에서 Pytest까지: JavaScript 개발자의 Python 테스트 여정

Barbara Streisand
Barbara Streisand원래의
2024-11-17 09:25:03167검색

# From Jest to Pytest: A JavaScript Developer

Jest에서 Pytest까지: JavaScript 개발자의 Python 테스트 여정

저는 JavaScript 배경을 가진 개발자로서 Jest로 테스트를 작성하는 데 상당한 시간을 보냈습니다. 내 프로젝트인 gimme_readme에서는 내가 사용하고 있던 타사 npm 모듈 때문에 Node 및 Jest를 사용하여 몇 가지 실험적인 기능을 시험해 봐야 했습니다. ES6 구문을 사용할 때 Jest 테스트를 실행하는 방법을 알려주는 훌륭한 Stack Overflow 스레드를 찾을 수 있었습니다. 이 똑똑한 사람들의 지혜가 없었다면 제가 어려움을 겪었을 것입니다! 그러나 Jest의 실험적 기능을 사용하는 방법에 대한 지식을 바탕으로 다음을 수행할 수 있었습니다.

  1. Jest에서 테스트를 작성합니다(이상한 구성에도 불구하고)
  2. 다음과 같이 CI 파이프라인을 초기에 설정합니다.
    1. 내 코드 린트(예: 향후 문제가 될 수 있거나 현재 버그를 일으킬 수 있는 잠재적인 코드 줄이 있는지 확인)
    2. 내 소스 코드를 테스트합니다(즉, 내 소스 코드가 어떻게 작동해야 하는지 설명하기 위해 내가 작성한 테스트를 실행합니다).

위에 설명된 CI 파이프라인의 코드는 여기에서 찾을 수 있으며, 모든 브랜치에 푸시가 이루어지거나 풀 요청이 있을 때마다 실행되도록 설정되어 있습니다. 이렇게 하면 내 저장소에 기여하려는 사람은 누구나 자신이 기여한 코드가 내 메인 브랜치에 병합할 만큼 "적절한지" 알 수 있습니다. 적어도 자동화된 테스트에 관한 한은 말이죠.

누구든지, 제가 예전에 나의 저장소에서 했던 작업에 대해서는 이쯤 할게요.

이번 주에 저는 제 친구 Aryan Khurana가 작성한 Python 프로젝트에 대한 몇 가지 테스트를 작성하는 데 도전하기로 결정했습니다. Aryan의 프로젝트는 GitHub 저장소에 대한 통찰력을 제공하는 github-echo라는 명령줄 도구입니다. 익숙하지 않은 언어를 사용하는 테스트 프레임워크(PyTest)는 확실히 제가 익숙하지 않은 영역이었지만 Aryan이 기꺼이 나에게 방법을 알려준 것에 정말 감사했습니다(Aryan에게 감사드립니다!).

pytest로 Python 코드 테스트

Aryan 저장소에 대한 테스트 작업을 시작했을 때 테스트 결과가 얼마나 다른지 즉시 압도되었습니다. Jest가 나에게 친숙한 영역이 된 반면, Python의 pytest는 매우 낯설게 느껴졌습니다. 그럼에도 불구하고 Aryan의 지도와 약간의 결단으로 나는 그 독특한 특징을 이해하기 시작했습니다.

테스트 사례에서 제가 발견한 내용을 분석해 보겠습니다.

매개변수화된 테스트: 내 눈길을 가장 먼저 사로잡은 것 중 하나는 @pytest.mark.parametrize 데코레이터였습니다. 이는 Jest의 test.each와 유사하지만 구문이 더 깔끔합니다.

   @pytest.mark.parametrize(
       'invalid_url',
       [
           'https://gitlab.com/username/repository',
           'https://github.com/username',
           # ... more test cases
       ],
   )

컨텍스트 관리자: Jest의 Expect().toThrow() 대신 Python은 pytest.raises와 함께 컨텍스트 관리자를 사용합니다.

   @pytest.mark.parametrize(
       'invalid_url',
       [
           'https://gitlab.com/username/repository',
           'https://github.com/username',
           # ... more test cases
       ],
   )

임시 파일 시스템: 테스트에서는 파일 시스템 작업을 위해 pytest의 tmp_path 고정 장치를 사용합니다. 이는 Jest에서 모의 ​​파일 시스템을 설정하는 것보다 훨씬 깔끔합니다.

   with pytest.raises(typer.BadParameter, match='Invalid GitHub repository URL'):
      check_cli_arguments(invalid_url, 'gemini', 0.5, Path('output.md'))

최종 생각

JavaScript와 Python 테스트 프레임워크를 모두 사용한 경험을 통해 소프트웨어 테스트에 대한 관점이 넓어졌습니다. Jest가 고향처럼 느껴졌지만 매개변수화된 테스트 및 고정 장치와 같은 pytest의 강력한 기능을 높이 평가하게 되었습니다. JavaScript 테스트를 작성하든 Python 테스트를 작성하든 최종 목표는 동일합니다. 즉, 사용자에게 안정적이고 잘 테스트된 코드를 제공하는 것입니다.

위 내용은 # Jest에서 Pytest까지: JavaScript 개발자의 Python 테스트 여정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.