jc.jang

TDD with Python 4장 본문

개발/Test-Driven Development with Python

TDD with Python 4장

jangstory 2019. 12. 18. 21:08

4장 테스트를 왜 하는 것인가?

 

"상수는 테스트하지 마라"는 규칙과 탈출구로 사용할 템플릿

lists/tests.py에 다음과 같은 테스트 코드를 작성했다.

 

def test_home_page_returns_correct_html(self):
    request = HttpRequest()
    response = home_page(request)
    self.assertTrue(response.content.startswith(b'<html>'))
    self.assertIn(b'<title>To-Do lists</title>', response.content)
    self.assertTrue(response.content.endswith(b'</html>'))

특정 HTML 문자열을 확인하고 있지만, HTML을 테스트하기 위한 효율적인 방법이 아니다. 단위 테스트 시의 일반적인 규칙 중 하나는 "상수는 테스트하지 마라"다. HTML을 문자열로 테스트하는 것은 상수 테스트와 같다고 할 수 있다.

정리: TDD 프로세스

출처-클린 코드를 위한 테스트 주도 개발

테스트를 작성하고 실행해서 그것이 실패하는 것을 확인한다. 그리고 문제를 해결하기 위해 최소 코드를 작성한다. 테스트를 통과할 때까지 이 과정을 반복한다. 필요에 따라 리팩터링을 하고 리팩터링 후에는 다시 테스트 과정을 반복한다.

 

출처-클린 코드를 위한 테스트 주도 개발

기능 테스트와 단위 테스트를 둘 다 해야할 때는 기능 테스트를 상위 테스트 관점으로 생각하면 된다.

 

먼저 기능 테스트를 작성하고 실패하는지 확인한다. 최소 코드 작성 프로세스에선 작은 TDD 주기를 통해 테스트가 통과하도록 만든다. 통과하면 다시 기능 테스트로 돌아가 애플리케이션 코드를 수정한다. 수정 후에는 다시 단위 테스트를 실시한다.

 

기능 테스트는 애플리케이션이 동작하는지 아닌지를 판단하기 위한 궁극의 수단이다. 반면, 단위 테스트는 이 판단을 돕기 위한 툴이라 할 수 있다. 이런 식으로 TDD를 표현한 것을 이중 반복 TDD(Dobule-Loop TDD)라고 부르는 경우도 있다.

'개발 > Test-Driven Development with Python' 카테고리의 다른 글

TDD with Python 7장  (0) 2020.01.21
TDD with Python 6장  (0) 2020.01.09
TDD with Python 5장  (0) 2019.12.19
TDD with Python 1, 2, 3장  (0) 2019.12.18
Comments