본문 바로가기
프로젝트/사이드 프로젝트

TDD기반 개발 프로젝트2: 테스트 설정하기

by soypablo 2023. 6. 23.

TDD(테스트 주도 개발)은 간단히 설명하면, 루프 형태의 개발 형태라고 볼수 있다.

다음의 루프를 따른다.

TDD의 개발 사이클

  1. 목표를 설정한다.
  2. 세부 목표를 설정한다.
  3. 목표에 대한 테스트를 만든다.
  4. 테스트를 만족하는 가장 최소한의 코드를 작성한다.
  5. 중복을 제거한다.
  6. 목표가 완료되지 않았거나 중복이 있으면 2번으로 되돌아간다. 목표가 완료되었고, 중복이 없으면 개발을 종료한다.

내가 생각하는 TDD의 장점은, Bottom UP과 Top Down 방식모두를 사용한다는 점이다.

목표를 설정하는 것은 Top Down이고, 가장 최소한의 코드를 작성하는 것은 Bottom Up에 해당한다.

TODO: TDD의 장점 더 잘 적기

TDD를 위한 테스트 코드 작성하기

앞서 1편에서 TDD를 위한 목표를 작성했다. (일단 목표와 세부 목표 다 설정했다고 치겠다.)

그럼 이제 '3. 목표에 대한 테스트를 만든다.'를 해보자.

최종 테스트 만들기

최종 테스트는 우리의 목표인 문자열|파일주소를 넣으면 볼드처리 된 문자열을 리턴 or 파일수정하는 것이다.

따라서 다음과 같은 최종 테스트를 만들었다.

from sub import bolding

class TestClass:
    def test_final_one():
        """최종 테스트1

        1.  불릿포인트 이후에 오는 제목(또는 키)에 대한 최종 테스트"""
        assert bolding(s=test1str[0]) == test1answer[0]

        assert bolding(s=test1str[1]) == test1answer[1]

    def test_final_two():
        """최종 테스트2

        2.  숫자 리스트 이후에 오는 제목(또는 키)에 대한 테스트"""
        assert bolding(s=test2str[0]) == test2answer[0]

    def test_final_three():
        """최종 테스트3

        3.  숫자리스트가 오고 그 이후에 불릿포인트가 결합된 패턴에 대한 테스트
        """

        assert bolding(s=test3str[0]) == test3answer[0]
        assert bolding(s=test3str[1]) == test3answer[1]

    def test_final_four():
        """최종 테스트4

        4. 불릿포인트가 오고 그 이후에 숫자리스트가 결합된 패턴에 대한 테스트"""

        assert bolding(s=test4str[0]) ==test4answer[0]
        assert bolding(s=test4str[1]) ==test4answer[1]

나는 테스트를 위한 라이브러리로 pytest를 사용할 것이기 때문에 해당 코드 형태로 작성하였다.
pytest는 pip install pytest로 설치할 수 있다.

pytest에 대해서는 해당 문서를 참고하기 바란다.

bolding 함수는 아직 구현되지 않은 상태이기 때문에, 해당 테스트를 실행하면 에러가 발생한다.

테스트는 CLI창에서 pytest를 호출하여 사용하는 방법이 있고, VSCODE에서 실행하는 방법이 있다.

  1. CLI창에서 pytest를 호출하기

    1. 터미널을 연다.
    2. 테스트가 있는 폴더로 이동한다.
    3. python -m pytest . 을 입력하면 테스트가 진행된다.
      주의점: test가 있는 파일의 이름은 반드시 test_로 시작해야 하며, 내부 테스트 함수의 이름도 test_로 시작해야 한다.링크
  2. VSCODE에서 TEST하기

    1. 확장 프로그램에서 Python Test Explorer for Visual Studio Code을 설치한다.
    2. 그러면 VSCODE의 왼쪽 사이드바에 플라스크 모양의 Test 버튼이 생긴다.
    3. 해당 버튼을 클릭한다. 자세한 사용법은 간단하니 알아서 써보시길.

나는 CLI로 테스트하는 것이 익숙한데, VSCODE에서 실행하는 방식이 익숙해지면 더 편할 것 같다. 하지만, CLI로 사용하는 방법도 반드시 익힐 것을 권한다.