2013-07-13 2 views
4

pytest 테스트 케이스를 실행하기위한 표준 방법은 py.test file_name입니다. 하지만 저는 왼쪽 패널에 Python 스크립트가 있고 오른쪽 창에 파이썬 인터프리터가있는 이맥스에서 개발합니다.테스트 스크립트 내에서 pytest 테스트 케이스 실행

내 워크 플로우는 내가 파이썬 스크립트를 변경할 수 있다는 것입니다, CTRL-C C (업데이트 된 변경 사항이 REPL에 전송되도록)을하고 REPL (CTRL-O)로 이동 그래서 테스트 업데이트 된 코드. 왼쪽의 테스트 케이스를 변경하고 올바른 REPL 화면으로 이동하여 업데이트 된 테스트 케이스를 실행할 수 있다면 좋을 것입니다.

셸을 스폰하고 pytest 명령을 실행하는 것과 달리 REPL 또는 스크립트 내에서 pytest 테스트 케이스를 실행하는 방법이 있습니까?

편집 : 나는 이전 REPL을 죽이고 새로 시작하지 않는 한 별도로, 나는 pytest에서 main 기능을 사용하고 스크립트에 있지만, 몇 가지 재미있는 이유를 호출하려고, 변경 사항이 포착되지 않았다으로 . 이것은 다른 Python 스크립트에서 발생하지 않으므로 pytest와 관련이 있다고 확신합니다. 다음은 코드입니다.

def test_add(): 
    assert myadd(1, 2) == 3 

if __name__ == '__main__': 
    pytest.main() 
+0

나는 예상 테스트에서 테스트를로드하려고 정규 py.test 러너를 시작하기 때문에 pytest.main()를 사용하면 REPL 내부에 가지고있는 테스트되지 않은 생각 폴더 및 모든 명명 규칙을 따르십시오 –

+0

@ Conrad.Dean : 나는 그것이 REPL에 관한 것이 아니라고 생각합니다. pytest가 테스트를 실행하기 전에 스크립트의 최신 코드를 선택한다는 인상을 받았다. 그러나 일단로드 된 테스트 코드는 테스트 스크립트의 변경 내용과 상관없이 다시로드되지 않습니다. 정말 이상한 ... – sasuke

답변

0

@ Conrad.Dean의 다음 의견. 테스트를 pytest.py에 넣는 것은 일종의 유용한 규칙입니다. if __name__ == '__main__'의 역할을 설명하는 예를 아래 :

def myadd(first, second): 
    return first + second 

def test_add(): 
    assert myadd(1, 2) == 3 

if __name__ == '__main__': 
    print("Running test_add") 
    test_add() 
+0

불행히도 작동하지 않습니다. 'print'가 실행되지만 테스트 케이스는 pytest에 의해 실행되지 않습니다. : ( – sasuke

+0

) 게다가 pytest의 주장 재 작성 및 다른 테스트 실행의 장점을 모두 잃지 않습니까? –

관련 문제