[python] 파이썬에서 단위 테스트 작성 : 어떻게 시작합니까? [닫은]

나는 파이썬에서 첫 번째 적절한 프로젝트를 완료했으며 이제 내 임무는 테스트를 작성하는 것입니다.

프로젝트를 처음 수행 한 것은 이번이 처음으로 테스트를 작성하는 것입니다.

문제는 어떻게 시작합니까? 나는 전혀 모른다. 누구나 필기 테스트를 시작하는 데 사용할 수있는 문서 / 튜토리얼 / 링크 / 서적을 지적 할 수 있습니까 (특히 단위 테스트)

이 주제에 대한 조언을 환영합니다.



답변

단위 테스트를 처음 사용하는 경우 가장 간단한 학습 방법이 가장 좋습니다. 그에 따라 기본 모듈py.test 대신 사용 하는 것이 좋습니다 .unittest

다음과 같은 두 가지 예를 고려하십시오.

예 1 (단위 테스트) :

import unittest

class LearningCase(unittest.TestCase):
    def test_starting_out(self):
        self.assertEqual(1, 1)

def main():
    unittest.main()

if __name__ == "__main__":
    main()

예 2 (pytest) :

def test_starting_out():
    assert 1 == 1

두 파일의 이름이 모두 같다고 가정하면 test_unittesting.py테스트를 어떻게 실행합니까?

예 1 (단위 테스트) :

cd /path/to/dir/
python test_unittesting.py

예 2 (pytest) :

cd /path/to/dir/
py.test


답변

무료 Python Book Dive Into Python 에는 유용한 단위 테스트 장이 있습니다.

현대적인 관행을 따르는 경우 프로젝트를 작성하는 동안 테스트를 작성하고 프로젝트가 거의 끝날 때까지 기다리지 않아야합니다.

조금 늦었지만 이제 다음에 알 것입니다. 🙂


답변

제 생각에는 체크 아웃하기에 좋은 3 가지 훌륭한 파이썬 테스트 프레임 워크가 있습니다.
유닛 테스트 – 모듈은 모든 파이썬 배포판에 기본으로 제공
유닛 테스트에 테스트를 실행할 수 있고, 적은 상용구가 있습니다 -.
pytest- 또한 unittest 테스트를 실행하고, 상용구가 적고,보고 기능이 우수하며, 멋진 추가 기능이 많이 있습니다.

이 모든 것들을 잘 비교하려면 http://pythontesting.net/start-here 에서 각각에 대한 소개를 읽으십시오 .
비품에 대한 기사가 확장되어 있으며 더 많은 기사가 있습니다.


답변

unittest에 대한 문서는 시작하기에 좋은 장소입니다.

또한 지금은 조금 늦었지만 앞으로는 프로젝트 자체 또는 프로젝트 전에 단위 테스트 작성을 고려하십시오. 그렇게하면 코드 변경을 통해 기존 코드가 손상되지 않았는지 확인하기 위해이를 사용하여 테스트 할 수 있으며 이론적으로 회귀 테스트로 사용할 수 있습니다. 이것은 테스트 케이스 작성의 전체 이점을 제공합니다. 🙂


답변

unittest 는 표준 라이브러리와 함께 제공되지만 nosetests를 권장합니다 .

코는 테스트를 쉽게하기 위해 단위 테스트를 확장합니다.

나는 또한 당신에게 pylint를 추천 할 것입니다

버그와 품질이 떨어지는 징후를 찾는 Python 소스 코드를 분석합니다.


답변

다른 사람들이 이미 대답했듯이 단위 테스트를 작성하는 데 늦었지만 너무 늦지는 않았습니다. 문제는 코드를 테스트 할 수 있는지 여부 입니다. 실제로 기존 코드를 테스트하는 것은 쉽지 않지만 레거시 코드로 효과적으로 작업하기 ( 핵심 포인트 또는 전구체 PDF 참조) 에 대한 책도 있습니다.

이제 단위 테스트 작성 여부는 당신의 전화입니다. 지루한 작업이 될 수 있음을 알아야합니다. 이를 통해 단위 테스트를 배우거나 수락 (end-to-end) 테스트 작성을 고려하고 코드를 변경하거나 프로젝트에 새 기능을 추가 할 때 단위 테스트 작성을 시작할 수 있습니다.


답변

nosetests는 파이썬에서 단위 테스트를위한 훌륭한 솔루션입니다. 단위 테스트 기반 테스트 케이스와 문서 테스트를 모두 지원하며 간단한 구성 파일로 시작합니다.