나는 이렇게 학습한다/Debug 14

pytest _ 하나의 함수에서 복수 케이스 테스트 하는 방법

단일 케이스 테스트 보통 테스트는 단일 케이스로 이루어집니다. 단일 케이스로 테스트를 하면 최소의 단위로 테스트를 진행하기 때문에 코드의 정확도를 높일 수 있고, 보는 이에게도 명확한 케이스 사례를 보여줄 수 있다는 장점이 있습니다. 예를 들어 회원가입 API를 테스트한다고 할 때 케이스를 다음처럼 나눌 수 있습니다. 성공 : 회원가입이 성공했는가? 실패1 : 회원가입 시 이메일이 중복되는가? 실패2 : 회원가입 시 닉네임이 중복되는가? 실패3 : 회원가입 시 패스워드가 유효한가? 하지만 유사한 케이스를 모두 단일 케이스로 테스트할 경우 비슷한 코드가 반복되면서 가독성과 효율이 떨어질 수 있습니다. 위의 케이스 중에서 실패1, 실패2를 살펴보겠습니다. 이 둘은 중복여부에 의한 실패를 확인하는 테스트로 엄..

@pytest.fixture 로 test 데이터 세팅하기

pytest.fixture 는 왜 사용할까? 테스트 코드를 작성하다보면 ‘클라이언트’나 ‘토큰’, ‘객체’ 등이 필요할 수 있습니다. 보통은 setup 이나 teardown 등으로 데이터를 세팅할 수 있지만 pytest에는 fixture 데코레이터를 통해 필요한 데이터를 세팅하고 어떤 테스트 함수든지 재활용할 수 있습니다. 테스트 코드 예시 아래는 로그인 api를 테스트 하는 함수입니다. # test_login.py def test_login_api(client, create_user): data = { "email": "test@test.com", "password": "password", } r = client.post("/api/v1/login", json=data) r_message = r.jso..

내가 쓴 Python 테스트 코드 coverage 알아보기

커버리지란? 테스트 케이스가 얼마나 충족되었는지를 나타내는 지표 중 하나입니다. 테스트를 진행하였을 때 ‘코드 자체가 얼마나 실행되었느냐’는 것이고, 수치를 통해 확인할 수 있습니다. 커버리지를 확인하려면? 테스트 코드를 작성하다보면 내 코드의 커버리지가 얼마나 되는지 궁금해지는데요. 제가 10초만에 커버리지를 확인할 수 있는 방법을 알려드리겠습니다. (테스트 코드가 이미 작성되어있고 테스트를 실행할 수 있는 상황을 가정합니다.) 1. 먼저 coverage 라이브러리를 설치합니다. pip install coverage 2-1. 만약 pytest 를 사용한다면 다음 명령어를 입력해주세요. coverage run -m pytest 2-2. 만약 unittest 를 사용한다면 다음 명령어를 입력해주세요. co..

[TIL]django__데이터 중복_IntegrityError_ValidationError

오늘 배운 것 회원가입 시 이메일 정보가 중복되면 에러로 반환하고 싶다. 장고 view에서 데이터의 중복을 확인하는 방법에는 여러 가지가 있는데 한 번 살펴보자. 처음에 나는 회원정보가 있는 Member테이블에서 email 칼럼의 값을 리스트 형태로 가져와 변수에 저장했다. 그리고 요청받은 email 데이터가 해당 리스트에 있는지 확인 하는 식으로 코드를 작성했다. 코드는 다음과 같다. email_list = Member.objects.values_list("email", flat=True) if data['email'] in email_list: # data['email']은 요청받은 이메일 정보이다. return ~~ 그리고 동료로부터 배운 두 번째 방법은 exists()매서드를 활용에 중복 여부를 ..