py.test 테스트를 실행하도록 PyCharm을 어떻게 구성합니까?


162

파이썬 코드에 대한 단위 테스트 작성을 시작하고 싶습니다 .py.test 프레임 워크는 Python의 번들 unittest 보다 나은 방법으로 들립니다 . 프로젝트에 "tests"디렉토리를 추가하고 test_sample.py 를 추가 했습니다. 이제 "tests"디렉토리에서 모든 테스트를 실행하도록 PyCharm을 구성하려고합니다.

PyCharm 은 테스트 러너에서 py.test지원 한다고 합니다 . 테스트를 실행하기 위해 실행 / 디버그 구성생성 할 수 있어야 하며 PyCharm에는 py.test 전용 "구성 생성"대화 상자 가 있다고 합니다. 그러나 그것은 주제에 대한 문서의 전체 범위이며,이 주장 된 대화 상자를 어디에서도 찾을 수 없습니다.

내가 프로젝트 도구 창에서 디렉터리를 마우스 오른쪽 단추로 클릭하면 내가있어 가정 에 "만들기 <이름>"메뉴 항목을 볼 수 있지만, 유일한 메뉴 항목은 "실행 구성 만들기"는 "만들기"로 시작. 아마도 문서가 잘못되었을 수도 있고 "실행 구성 만들기"가 유망한 것처럼 들립니다. 불행히도, 하위 메뉴의 유일한 두 항목은 "C : \ mypath ...의 Unittests"와 "C : \ mypath ...의 Doctests"입니다. py.test에 대한 메뉴 항목이 없습니다.

test_sample.py를 열고 편집기 창에서 마우스 오른쪽 버튼을 클릭하면 "Create <name>"메뉴 항목이 약속됩니다. "test_sa에서 'Unittests 만들기 ...'..."와 "Run 'test_sa에서 단위 테스트 ...' '및' 'test_sa에서 단위 테스트 ...'디버그. 다시 말하지만, 이는 모두 단위 테스트 프레임 워크에 고유합니다. py.test에는 없습니다.

"unittest"라는 메뉴 항목을 시도하면 "이름", "유형", "폴더"및 "패턴"이있는 "테스트"그룹 상자 및 "스크립트"및 "클래스"에 대한 옵션이있는 대화 상자가 나타납니다. "및"함수 "등. 이는 Python Unit Test에 대한 구성 을 추가하기 위한 대화 상자로 문서화 된 것과 정확히 같 으며"이름 "및"테스트 실행 "및"키워드 "옵션과는 다릅니다. 에서 py.test에 대한 구성 대화 상자를 표시합니다. 대화 상자 안에 추가 할 테스트 프레임 워크를 전환하는 것은 없습니다.

Python 3.1.3 및 pytest 2.0.3이 설치된 Windows에서 PyCharm 1.5.2를 사용하고 있습니다. py.test명령 줄에서 테스트를 성공적으로 실행할 수 있으므로 pytest가 올바르게 설치되지 않는 것과 같은 간단한 것은 아닙니다.

py.test 테스트를 실행하도록 PyCharm을 어떻게 구성합니까?

답변:


228

파일 | 설정 | 도구 | Python 통합 도구 및 기본 테스트 실행기를 py.test로 변경하십시오. 그런 다음 py.test 옵션을 사용하여 단위 테스트 대신 테스트를 만듭니다.


하! 내가 어떻게 그리웠는지 모르겠다. 그러나 절반 만 작동합니다. 프로젝트 도구 창에서 폴더를 마우스 오른쪽 버튼으로 클릭하면 py.tests가 아닌 doctest를 만들 수있는 옵션이 제공됩니다. (버그 보고서를 작성하겠습니다.) 그러나 편집기에서 마우스 오른쪽 단추를 클릭 한 다음 "스크립트 :"를 디렉토리 이름으로 변경하면 작동합니다.
Joe White

3
또한 소스 디렉토리를 "소스 루트"로 표시하십시오 : jetbrains.com/pycharm/webhelp/content-root.html
Inti

1
모듈 단위가 아닌 전체 프로젝트 (또는 모든 프로젝트)에 이것을 설정하는 방법이 있습니까?
OrangeDog

1
File | Settings | Tools | Python Integrated ToolsPyCharm 5의 기본 설정이 아닌 프로젝트 설정에서만 사용할 수있는 것으로 보입니다 .
killthrush

2
일단 구성되면 실제로 어떻게 테스트를 실행합니까?
Chris Anderson

51

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools- 선택 py.test으로 Default test runner.
  2. Django를 사용하는 경우 Preference -> Languages&Frameworks -> Django-눈금을 설정하십시오.Do not use Django Test runner
  3. 에서 기존의 모든 테스트 구성을 Run/Debug configuration지우십시오. 그렇지 않으면 이전 구성으로 테스트가 실행됩니다.
  4. 기본 추가 인수를 설정하려면 py.test 기본 구성을 업데이트하십시오. Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments

2
PyCharm 2017.3.2에서는 py.test를 기본값으로 설정 한 후에도 프로젝트 패널에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고을 선택 New => Python File하면 Kind:드롭 다운은 Python 파일, 단위 테스트, Python 스텁, Pytest가 아닌 옵션 만 제공합니다. 위의 스레드에서 언급 한 모든 위치를 살펴 보았습니다. 내가 무엇을 놓치고 있습니까?
Tom Baker

파이썬 파일, 단위 테스트, 파이썬 스텁-그것들은 파이썬 파일이며, 사전 정의 된 데이터가 있으며, 직접 추가 할 수 있습니다 . jetbrains.com/help/pycharm/… 그러나 이것은 py.test 테스트 실행에는 영향을 미치지 않습니다. 파이썬 파일 만 만들면 작동합니다. 이 주제에서는 py.test를 실행 하도록 jetbrains.com/help/pycharm/running-tests.html 기능을 구성하는 방법에 대해 설명합니다 .
Sergey Kubrak

최신 PyCharm에서 "기본값"은 "템플릿"
AgDude

19

툴바에서 Run / Debug Configuration 항목을 사용해야한다고 생각합니다. 이를 클릭하고 '구성 편집'을 클릭하십시오 (또는 메뉴 항목 Run-> Edit Configurations 사용). 왼쪽 창의 'Defaults'섹션에는 원하는 것으로 생각되는 'py.test'항목이 있습니다.

또한 매뉴얼이 UI와 일치하지 않는다는 것을 알았습니다. 문제를 올바르게 이해하고 도움이되기를 바랍니다.


4
"Defaults> py.test"페이지는 실제로 구성을 생성하는 방법을 제공하지 않았습니다. 그러나 구성 편집 대화 상자로 이동하여 "+"도구 모음 단추를 클릭하고 "py.test"를 선택한 다음 "작업 디렉토리"를 테스트가 포함 된 디렉토리로 설정하면 테스트를 실행하는 구성이 작성됩니다. 프로그램의 유용한 부분을 알려주는 +1. 기본적으로 py.test로 변경하는 것이 더 나은 해결책이라고 생각하기 때문에 @yole에 허용 된 대답을 줄 것입니다. 현재 파일과 그와 같은 것을 실행할 수 있어야합니다.
Joe White

@JoeWhite 도움이 되었습니까
Hariom Singh

구성 편집 창에서 pytest 구성을 선택한 후 테스트 폴더의 루트 를 선택 Target해야 Script ath했습니다.
RAbraham

명령 줄 인수 등을 전달하는 것과 같이 다른 기능을 열 때 훨씬 더 좋은 방법입니다.
chirag nayak

13

다음은 pytest 3.7.2(pip를 통해 설치됨) 및 pycharms에서 작동하게하는 방법입니다 2017.3.

  1. 이동 edit configurations

  1. 새로운 실행 구성을 추가하고 선택 py.test

  1. 실행 구성 세부 사항에서 target= python및 아래의 이름없는 필드 를로 설정해야 합니다 tests. 이것이 테스트 폴더의 이름 인 것 같습니다. 너무 확실하지 않습니다. 또한 -s테스트를 디버그하면 콘솔이 올바르게 작동하도록 인수를 권장합니다 . 인수없이 pytest는 출력을 캡처하고 디버그 콘솔을 버그로 만듭니다.

  1. 내 테스트 폴더는 다음과 같습니다. 이것은 내 프로젝트의 루트 바로 아래에 있습니다 ( my_project/tests).

  1. foobar_test.py파일 : (수입 할 필요 없음) :
데프 test_foobar () :
    print ( "hello pytest")
    주장하다
  1. 일반 실행 명령으로 실행


현재 파일에서만 테스트를 실행할 가능성이 있습니까? 다른 파일을 열 때마다 구성 설정에서 파일 이름을 변경해야한다는 것을 알았습니다.
algot

@algot 나는 내 머리 꼭대기에 그것을 모른다. : 이것 좀 봐 가지고 jetbrains.com/help/pycharm/performing-tests.html :이 jetbrains.com/pycharm/guide/tips/run-single-test
벤자민 Crouzier을

5

확실하게 문서화되지 않았습니다. 기본값에서 새 구성을 추가하면 "/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py"스크립트를 실행하는 영역에있게됩니다. 문서화되어 있지 않으며 명령 줄 인수에 대한 자체 아이디어가 있습니다.

당신은 할 수 있습니다 :

  1. 놀아보고 스크립트를 뒤집어 놓고 어떻게 든 py.test가 인수를 받아 들일 수 있는지 확인하십시오. 작동 할 수도 있습니다. 상반기에는 없었습니다.
  2. 콘솔에서 "py.test * .py"를 실행하십시오.

이상하게도 JetBrains가 자체 페이지로 Google 알고리즘을 폭격시키는 좋은 일을하므로 토론을 찾기가 어려울 것입니다.


3

동일한 질문에 도달하고 pycharm 버전을 찾았을 때이 스레드를 찾으십시오. 내 문제를 해결


작동하지만 프로젝트 창에서 테스트 스크립트 파일 이름을 마우스 오른쪽 버튼으로 클릭해야합니다. 동일한 테스트 스크립트의 파일 편집기 영역을 마우스 오른쪽 단추로 클릭하면 불행히도 이전 기본 도구 (Unittests)가 계속 표시됩니다. 테스트하려는 개별 기능을 지정할 수 없으므로 성가신 일입니다.
Hongyu Zhang

3

pycharm 2019.2에서는 모든 테스트를 실행하기 위해 간단히이 작업을 수행 할 수 있습니다.

  1. 실행> 구성 편집> pytest 추가
  2. 다음 스크린 샷과 같이 옵션을 설정하십시오 구성 스크린 샷
  3. 디버그를 클릭하십시오 (또는 단축키 Shift + Alt + F9를 사용하여 pytest를 실행하십시오)

pytest를 pycharm에 더 많이 통합하려면 https://www.jetbrains.com/help/pycharm/pytest.html을 참조 하십시오.


2

2018.2를 사용하고 있습니다.

실행-> 구성 편집 ...을 수행 한 다음 모달 대화 상자의 왼쪽 상단에서 +를 클릭하십시오. "python tests"-> py.test를 선택한 다음 "py.test를 사용한 모든 테스트"와 같은 이름을 지정합니다.

대상 : 모듈 이름을 선택하고 테스트가있는 모듈 (즉, '테스트') 또는 테스트가 코드와 혼합 된 경우 모든 코드가있는 모듈에 넣습니다. 이것은 나를 넘어 뜨리고 있었다.

파이썬 인터프리터를 설정했습니다.

작업 디렉토리를 프로젝트 디렉토리로 설정했습니다.


0

py.test 용 pip 설치와 Specs addin (옵션 -spec) 사용 (좋은 테스트 요약 언어와 같은 Rspec 용)을 포함하는 특수 Conda python 설정으로 수행해야했습니다.

1. 옵션 = --spec을 포함하도록 기본 py.test를 편집하십시오. 이는 플러그인 사용을 의미합니다 : https://github.com/pchomik/pytest-spec

py.test를 사용하여 새 테스트 구성을 만듭니다. ~ / anaconda / envs / 원하는 인터프리터를 사용하도록 파이썬 인터프리터를 변경하십시오 (예 : 내 이름 지정을 위해 py27).

3. 'unittests'테스트 구성을 삭제하십시오.

4. 이제 기본 테스트 구성은 멋진 Rspec 스타일 출력을 사용하는 py.test입니다. 나는 그것을 좋아한다! 모두 감사합니다!

실행 / 디버그 구성에 대한 ps Jetbrains의 문서는 다음과 같습니다. https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test


0

2018.3에서는 pytest를 사용하고 있음을 자동으로 감지하는 것처럼 보이지만 여전히 프로젝트의 최상위 수준에서 실행할 수는 없습니다. pytesttests디렉토리 마다 개별적 으로 실행해야했습니다 .

그러나 구성 중 하나를 선택하고 프로젝트의 루트에서 실행되도록 수동으로 편집 할 수 있으며 이것이 효과가 있음을 알았습니다. 구성 드롭 다운에서 수동으로 선택해야합니다. 프로젝트 창의 루트 폴더를 마우스 오른쪽 버튼으로 클릭 할 수 없습니다. 그러나 적어도 모든 테스트를 한 번에 실행할 수 있습니다.


0

프로젝트에 Pytest 사용

  1. 열기 설정 / 환경 설정 | 도구 | 테스트 프레임 워크 선택에 설명 된 Python 통합 도구 설정 대화 상자
  2. 에서 기본 테스트 러너 필드 선택 pytest을 .
  3. 확인을 클릭하여 설정을 저장하십시오.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.