FastAPI를 이용한 TDD 개발 - 4
·
프로그래밍 언어/파이썬
Pytest 설정 `project` 디렉토리에`tests` 디렉토리를 생성하고 새롭게 아래 파일을 만들어줍니다. 1. __init__.py 2. conftest.py 3. test_ping.py 기본적으로 pytest는 prefix, suffix로 `test`가 붙어 있을 경우 자동으로 인식합니다. 예) `test_*.py` or `*_test.py` 만약 클래스를 만들어 사용한다면 클래스 이름의 시작은 `Test`로 만들어야 합니다. # if a class is used, it must begin with Test class TestFoo: # test functions must begin with test_ def test_bar(self): assert "foo" != "bar" Fixtures t..
FastAPI를 이용한 TDD 개발 - 3
·
프로그래밍 언어/파이썬
Postgres Postgres 설정을 위해서 docker-compose.yml 파일에 새로운 서비스를 명세해야합니다. 그리고 asyncpg 파이썬 라이브러리 설치도 해야합니다. project 디렉토리 아래 db 디렉토리를 만들고 그 안에 create.sql 파일을 생성하며 아래와 같이 명세합니다. CREATE DATABASE web_dev; CREATE DATABASE web_test; Dokcerfile을 같은 디렉토리에서 만들어 줍니다. # pull official base image FROM postgres:16 # run create.sql on init ADD create.sql /docker-entrypoint-initdb.d DB 컨테이너의 `docker-entrypoint-initdb.d..
FastAPI를 이용한 TDD 개발 - 2
·
프로그래밍 언어/파이썬
도커 설정 FastAPI app를 컨테이너화 시켜보겠습니다. 시작하기 앞서 도커와 컴포즈가 정상적으로 설치되어 있어야 합니다. $ docker -v Docker version 24.0.7, build afdd53b $ docker-compose -v Docker Compose version v2.23.3-desktop.2 `project` 디렉토리에 `Dockerfile`를 아래와 같이 만들어 줍니다. # pull official base image FROM python:3.12.1-slim-bookworm # set working directory WORKDIR /usr/src/app # set environment variables ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTH..
FastAPI를 이용한 TDD 개발 - 1
·
프로그래밍 언어/파이썬
프로젝트 구조를 만들어 보겠습니다. 셋업 $ mkdir demo_fastapi_tdd_docker && cd demo_fastapi_tdd_docker $ mkdir project $ mkdir app $ python -m venv venv; source venv/bin/activate; python -m pip install --upgrade pip; (venv)$ pip install fastapi (venv)$ pip install uvicorn main.py, _init_.py 파일을 app 디렉토리에 만들어 줍니다. main 모듈에서 FastAPI의 인스턴스를 생성하고 동기식으로 테스트용 엔드포인트 API를 만들어 보겠습니다. # project/app/main.py from fastapi imp..
FastAPI를 이용한 TDD 개발
·
프로그래밍 언어/파이썬
개요 Python의 대표적인 FastAPI 비동기 프레임워크를 기반으로 HTTP RESTful 설계 원칙에 따른 개발을 진행합니다. /summaries GET READ get all summaries /summaries/:id GET READ get a single summary /summaries POST CREATE add a summary /summaries/:id PUT UPDATE update a summary /summaries/:id DELETE DELETE delete a summary 로컬 개발환경과 배포를 단순화하기 위해서 Docker를 이용하여 FastAPI를 이용한 프로젝트를 진행합니다. Postgres 데이터베이스를 이용하고 Tortoise ORM을 이용하여 비동기 처리를 하도록 ..
pyenv 실행 오류
·
여러가지/오류
문서 제목: XAMPP PATH 문제로 인한 pyenv 및 Homebrew 오류 해결 방법 개요 /Applications/XAMPP/bin이 사용자의 PATH 환경 변수에 추가되었을 때 발생할 수 있는 pyenv 및 Homebrew와 관련된 오류를 해결하는 방법에 대해 설명합니다. 이러한 설정은 XAMPP의 유틸리티가 표준 UNIX 명령어를 오버라이드하여 다양한 소프트웨어의 작동에 영향을 주기 때문에 문제를 일으킵니다. 오류 증상 pyenv를 설치와 설정을 끝내고 나서 pyenv 명령어를 터미널에 입력하면 반복적으로 log 들이 나타나납니다. Unknown option: 1 Usage: head [-options] ... 문제 발생 원인 /Applications/XAMPP/bin 디렉토리에는 표준 UNI..
테스트의 종류
·
여러가지
TEST의 종류 (1) Sanity Testing : 새로운 버전이 주요 테스트를 수행하기 적합한지를 판단하기 위한 테스팅. 만약 사용 초기의 Crash 등으로 프로그램이 사용불가능하다면 시스템은 테스팅이 불가능하다. 즉, QA를 위한 테스트라 할 수 있다. (2) BlackBox Testing : 내부설계 및 구현은 고려하지 않고 요구사항과 기능성에만 기반한 테스팅을 수행한다. (3) WhiteBox Testing : 글래스박스 테스팅이라고도 하며, 내부로직에 대한 지식을 기반으로 코드구문, 분기, 조건 등에 대한 커버리지를 포함한다. (4) Unit Testing : 개발자에 의해 수행되며 소프트웨어 모듈 각각에 대한 세부적 테스팅 (5) End to End Testing : 주로 네트워크, DB 연..
스택: 데이터를 차곡차곡 쌓기
·
여러가지/알고리즘 & 자료구조
들어가기 앞서 스택과 큐는 쓰임새가 많아요. OS 내부의 많은 시스템이 스택과 큐를 기반으로 하며 그래프와 트리순회도 결국에는 스택과 큐로 하게 되요. 깊이 우선 탐색은 스택을 이용하는 순회이며, 너비 우선 탐색은 큐를 기반으로 합니다. 스택 마지막에 들어온 데이터가 가장 먼저 나가게 되요. LIFO(Last In First Out) ADT Stack - Object : LIFO 객체 - Operation empty() -> Boolean : 스택이 비어 있으면 True or False push(data) : data를 스택의 맨 위에 삽입 pop() -> element : 스택의 맨 위에 있는 데이터를 삭제하며 반환 peek() -> element : 스택의 맨위에 이쓴 데이터를 반환만 함 동적 배열을..