블로그 글 추가 및 수정 필요
용어
TestCase - 테스트 조직의 기본 단위
(ex 유저 테스트 한다 ? UserTestCase)
Fixture -
Assertion - unittest 실패하면
View에서 써야할 로직들이 테스트 코드에 들어갈 필요 없다.
Input 과 Output이 되도록
assertEqual 같은지 확인하는 메소드
setUp() - 테스트할
tearDown() - 테스트할 fixture을 없애버린다. 다른 테스트에 영향이 가지 않도록 하기 위해
유닛테스트 파이썬 모듈을 장고가 내부적으로 사용한다.
호출해줄 수 있는 Client() 메소드
이 테스트 케이스에서 사용할 데이터가 필요 - Setup() 구성
product.objects.create()가 많으면 bulk를 주로 사용한다.
client = Client()
Client() 클래스를 client 인스턴스화 해서 사용
Setup에서 데이터 무조건 넣고(테스트 케이스에서 테스트 메소드 실행 하기 전에)
tearDown은 넣은 데이터를 다 지움
유닛 테스트에서는 ID값을 넣어줘야 좋음, 까먹지 않을 수 있다..
unit test 실패라면?
내가 짠 View가 문제이거나 , 값이 문제일수도 있다.
테스트 코드를 잘 짜야 나중에 리팩토링 할 때 수월하게 할 수 있다. 테스트 코드를 통과하면 이상이 없기 때문에
면접때 ... 유닛테스트는 어떻게 진행 하시는지? 좋은 질문
Mocking
유닛테스트를 하다보면 테스트를 하기 위해 실제로 실행할 수 없는 코드들이 있다.
외부 API 사용 시
Mock(거짓된 값)을 이용한 테스트를 시행한다.
외부 api 호출할떄 그 api는 해당하는 그 서비스를 만든 회사에서 이미 유닛 테스트를 다 하고 정식으로 릴리즈를 한 버전을 쓰는것이기 때문에
우리의 유닛테스트에서 정확한 값이 온것에 대한 검증이 필요가 없다.
요청에 대한 Mock(거짓된 값)을 이용한 테스트를 시행한다.
호출했다고 치고 리스폰 값을 이용하자
request 에 대한 테스트를 하지 않고
정상적인 값이 왔다고 생각하고, 정상적인 값(Mock)을
@patch(users.views.requests)
response 값을 우리가 데이터를 직접 만들어서 json 형태로