나는 이렇게 학습한다/Debug14 SQLAlchemy _ ForeignKey 필드에 name 을 넣어주어야 Alembic 이 downgrade 해줌 한 줄 요약 *ForeignKey 필드에 name을 넣어주어야 *Alembic 이 *downgrade 해줌. *ForeignKey 필드는 다른 테이블의 기본 키를 참조하는 테이블 필드를 의미함 *Alembic은 Python용 데이터베이스 마이그레이션 도구임 *downgrade는 이전 version으로 되돌리는 것을 의미함 문제상황 부모 record 를 지우면 자식 record 도 지워지도록, 자식 parent_id 필드에 ondelete="CASCADE" 옵션을 추가했다. class Child(Base): __tablename__ = "child" id = sa.Column(UUID(as_uuid=True), primary_key=True) parent_id = sa.Column( UUID(as_uuid.. 2023. 3. 23. pytest _ 테스트 코드에서 현재 시간 바꾸는 방법 현재 시간을 바꾸는 이유 테스트 코드를 작성하다 보면 현재 시간이 특정 시간을 넘겼을 때 정상적으로 코드가 수행되는지 테스트하고 싶을 때가 있다. 예를 들어 만료일자가 있고 오늘 날짜가 만료일자를 지나면 서비스를 중단하는 로직이 있다고 하자. 이를 어떻게 테스트할 수 있을까? 오늘 날짜가 아직 만료일자를 지나지 않았기 때문에 이를 테스트하기 위해서는 오늘 날짜 혹은 만료일자를 mock으로 대체하여 구현해야 한다. 하지만 mock을 직접 구현하는 데에는 코스트가 들기 때문에 아무래도 꺼려지는 방법이다. 만약 당신이 pytest를 사용한다면 pytest-freezegun 라이브러리를 이용해 이 문제를 쉽게 해결할 수 있다. pytest에서 시간 freeze 하는 방법 먼저 pytest-freezegun 라이.. 2022. 11. 17. pytest _ 비동기 테스트 실행하기 (feat. auto 모드) pytest 에서 async 테스트 함수를 실행하는 방법에는 'strict 모드' 와 'auto 모드' 가 있다. 오늘은 손쉽게 비동기 테스트를 할 수 있는 'auto 모드' 에 대해 알아보자. 먼저 pytest-asyncio 를 설치한다. pip install pytest-asyncio 아래 1번과 2번 중에 하나를 선택하여 파일과 코드를 추가한다. 1번 # pytest.ini [pytest] asyncio_mode = auto 2번 # pyproject.toml [tool.pytest.ini_options] asyncio_mode = "auto" 이것으로 'auto 모드' 설정이 끝났다. auto 모드는 pytest.ini 혹은 pyproject.toml 파일에 옵션 코드를 추가하여 async 테스트.. 2022. 10. 26. python _ traceback 에러 메시지 핸들링하기 traceback 이란? 파이썬으로 개발을 하다보면 traceback 이란 단어를 많이 접하게 된다. traceback은 역 추적 이란 뜻으로 해당 에러가 어디서부터 발생했는지 우리에게 알려준다. 예를들어 다음처럼 빈 dictionary에 “값 내놔” 라는 key를 호출하면, 해당 key가 없기 때문에 KeyError가 발생한다. dict = {} dict["값 내놔"] Traceback (most recent call last): File "example.py", line 2, in dict["값 내놔"] KeyError: '값 내놔' 위의 메시지로 보자면 KeyError가 line 2에서 발생했음을 알 수 있다. 이처럼 에러 메시지는 디버깅을 할 때 매우 유용하다. 하지만 에러가 언제 발생할지 우리는.. 2022. 9. 24. pytest _ pytest-cov로 coverage 확인하기(실습) GitHub - Daco2020/pytest-cov-practice: Repository for practicing pytest-cov Repository for practicing pytest-cov. Contribute to Daco2020/pytest-cov-practice development by creating an account on GitHub. github.com (실습에 사용하는 소스코드는 위 링크에서 확인할 수 있습니다.) pytest-cov 란? pytest-cov는 --cov 옵션 추가하여 테스트 대상의 coverage를 확인할 수 있습니다. 사용자는 coverage 수치를 통해 테스트의 적용범위를 파악할 수 있습니다. 실습 방법 레포지토리 복사 git clone https://g.. 2022. 9. 5. pytest _ mock 사용하여 테스트 코드 작성하기 mock이란? 쉽게 말해 ‘가짜’ 데이터라고 이해하면 된다. 예를 들어 테스트 코드를 작성할 때, 실제 모듈과 유사하게 동작하는 가짜 데이터를 만들어 사용할 수 있다. ‘가짜’ 데이터인 ‘mock’을 왜 사용하는 걸까? 테스트하려는 함수가 10초 이상의 연산 시간이 필요한 모듈에 의존하고 있다고 가정해보자. 우리는 해당 함수를 테스트할 때마다 매번 10초를 기다려야 한다. 이는 개발 생산성을 크게 저하시킬 것이다. 의존하고 있는 모듈로 인해 본 코드를 테스트하기 어려울 때, mock을 사용하면 해당 모듈을 실행하지 않고도 해당 테스트를 검증할 수 있다. 우리는 모듈의 응답을 mock으로 대체함으로써 본 코드의 테스트에 집중할 수 있다. 이처럼 성능 저하, 비용 등 불필요한 리소스 발생이 예상될 때, 일반.. 2022. 8. 14. 이전 1 2 3 다음