nose vs pytest-내가 선택해야하는 (주관적) 차이점은 무엇입니까? [닫은]


85

나는 많은 (단위) 테스트와 함께 다소 큰 (다중 스레드) Python 프로젝트 작업을 시작했습니다. 가장 중요한 문제는 애플리케이션을 실행하려면 컨텍스트 관리자가 구현하는 사전 설정 환경이 필요하다는 것입니다. 지금까지이 관리자 내에서 테스트를 실행하는 단위 테스트 실행기의 패치 버전을 사용했지만 다른 테스트 모듈간에 컨텍스트를 전환 할 수는 없습니다.

nose와 pytest는 모두 많은 세분성에서 조명기를 지원하기 때문에 그런 일을 지원하므로 nose 또는 pytest로 전환하는 방법을 검토하고 있습니다. 이 두 라이브러리 모두 '태그 지정'테스트를 지원하고 태그가 지정된 하위 집합 만 실행합니다.

나는 nose와 pytest의 문서를 조금 살펴 보았고, 그 라이브러리의 더 큰 부분은 기본적으로 동일한 기능을 지원하지만 이름이 다르거 나 약간 다른 구문이 필요할 수 있습니다. 또한 사용 가능한 플러그인에서 약간의 차이가 있음을 지적했습니다 (nose에는 다중 프로세스 지원이 있고 pytest는 예를 들어 보이지 않는 것 같습니다)

그래서 악마는 세부 사항에있는 것 같습니다. 이는 (적어도 적어도) 개인적인 취향을 의미하며 우리는 개인적인 취향에 가장 잘 맞는 라이브러리를 사용하는 것이 좋습니다.

그래서 우리의 필요에 가장 잘 맞는 라이브러리 / 커뮤니티 콤보를 선택하기 위해 왜 코나 파이 테스트를해야하는지 주관적인 논증을 요청하고 싶습니다.


그냥 더 많거나 적은 같은 질문도 질문했다 주목 여기 -하지만 난 여전히 질문을 reasking 생각 그래서, 5 년 전입니다 만드는 의미
야콥 반 베들레헴

9
pytestpytest-xdist 플러그인을 통해 다중 프로세스 지원을 지원합니다 .
Bruno Oliveira 2014

2
여담으로, 상황에 맞는 관리자는 그냥 일반 파이썬 객체, 그리고 당신이 부를 수있는 manager.__enter__()당신에 TestCase.setUp(), 그리고 manager.__exit__()당신을에서 tearDown().
rescdsk

답변:


80

Pylons의 기본값이었던 Nose를 사용했습니다. 나는 그것을 전혀 좋아하지 않았다. 여러 위치에 구성 덩굴손이 있었고 거의 모든 것이 문서화되지 않은 플러그인으로 수행되어 훨씬 더 간접적이고 혼란 스러웠으며 기본적으로 단위 테스트 테스트를 수행했기 때문에 정기적으로 유니 코드 트레이스 백으로 중단되어 오류의 원인을 숨겼습니다.

나는 지난 몇 년 동안 py.test에 꽤 만족했습니다. 단지와 테스트 쓸 수 있다는 assert상자 밖으로 나를이 테스트를 작성 싫어 만드는 방법 이하, 핵심은 매우 간단했다 꼭대기에 내가 무엇을해야 해킹. 고정 된 플러그인 인터페이스가 아니라 훅이 많고, 더 깊이 파헤쳐 야 할 경우 꽤 이해할 수있는 소스 코드가 있습니다. 나는 심지어 py.test에서 Testify 테스트를 실행하기위한 어댑터를 작성했고, py.test보다 Testify에 더 많은 문제가 있었다.

즉, nose에는 클래스없는 테스트 용 플러그인이 있고 요즘에는 내성을 주장하므로 둘 중 하나를 사용해도 괜찮을 것입니다. 그래도 여전히 py.test를 사용하여 시작할 수있는 것처럼 느껴지고 중단 될 때 무슨 일이 일어나는지 이해할 수 있습니다.


2
트레이스 백을 숨기는 문제는 몇 년 전에 코 0.11 부근에서 수정되었습니다. 파이썬 3 포트 이후로 나는 어떤 유니 코드 트레이스 백이 덜 빈번 할 것이라고 예상합니다 (개인적으로 저는 코에 유니 코드 문제가 한 번만 발생했다고 생각합니다.이 문제는 일부 "트릭"을 수행 한 일부 테스트 케이스 기본 클래스와 결합 할 때 잘립니다. " t 정말 말이 되요-그래서 그것은 코의 잘못이 아닌 것으로 판명되었습니다). 그래서 아마도 당신이 좋아하는 것, 진리에 두 도구는 거친 가장자리는 지난 몇 년 동안 그들에게 참패를 당하고 있었다 의심 가장 최근에 ;-) 사용 중 가장 좋아하는
Croad Langshan을

최근 문서 부분은 어떻습니까? 나는 또한 nosetests 또는 py.test를 사용할지 혼란 스럽습니다. 둘 다 똑같이 좋은 것 같지만 내가 읽은 것처럼 요즘 대부분의 사람들이 코 검사를 사용하고 있습니다. py.tests에 더 나은 다중 처리 라이브러리 세트가있는 이유는 무엇일까요?
proprius

1
@proprius 그것은 코 테스트가 먼저 왔을 수도 있습니다. 일부 프레임 워크는 이에 대한 지원을 추가했고, 해당 프레임 워크를 사용하는 프로젝트는 기본적으로이를 사용했으며 확산되었습니다. 또한 py.test는 nose 및 unittest 테스트를 실행할 수 있지만 일반적인 스타일은 클래스를 중심으로 정렬되지 않으므로 py.test로 이식하는 것이 어려울 수 있습니다.
Eevee

4
나는 pytest의 문서 부분을 읽기 시작했으며 다중 처리 목적뿐만 아니라 newbee에 대한 학습 측면에서도 pytest가 더 나은 선택이라는 것을 깨달았습니다.
proprius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.