Python/Advanced 16

[Python 비동기] (1) 코루틴, 비동기 관련 용어 이해

Python 비동기 배경 1. python 은 동기 기반으로 설계된 언어로 대부분의 내장 API들이 동기로 작동 2. python 의 비동기 방식(코루틴)들은 Generator를 이용해 비동기 코드를 작성함 3. python 3.4에 asyncio 라이브러리가 표준으로 채택 4. python 3.5에 async/await 키워드가 추가되며, 비동기 프로그래밍이 가능해짐 과거의 Python 비동기 구현은 generator를 이용해 Coroutine을 구현하는 것 현재의 Python 비동기 구현은 asyncio 라이브러리의 async/await 구문을 사용하여 구현하는 것 ※ 여기서 과거란 python 3.5 버전 이전의 방식을 뜻함 Python 비동기 관련 용어 키워드 Subroutine : 특정 프로그램..

Python/Advanced 2023.02.08

[Pytest] 4. Pytest with Django (Feat. pytest-Django)

pytest-django 설치 Django 프레임워크에서 Pytest를 진행 하기 위해선 pytest-django 패키지 설치가 필요하다. $ pip install pytest-django https://pytest-django.readthedocs.io/en/latest/ pytest-django Documentation — pytest-django documentation © Copyright 2022, Andreas Pelme and contributors. Revision 1f3708ab. pytest-django.readthedocs.io django 셋팅 1. Django 프로젝트 생성 2. Django APP 생성 3. Settings.py에 DB 정보 및 APP 등록 (만약에 DOT_ENV..

Python/Advanced 2022.11.06

[Pytest] 3. Pytest 문법 (Feat. fixture, parametize)

Basic pytest 기본 사용법 # test1.py import pytest def func(x): return x + 1 def test_add(): assert func(4) == 4 $ pytest test1.py Fixture Fixture란 Testing 을 하기 위해 공통적으로 필요한 자원을 사전에 준비해놓는 방법 (1) square_10이란 함수를 Fixture로 준비. (테스트 간 매반 호출됨) # 함수를 fixture로 @pytest.fixture def square_10(): return 10 * 10 def test_square(square_10): assert square_10 == 100 # 121 (2) square_10이란 함수를 Fixture로 미리 준비 및 활용 @pyt..

Python/Advanced 2022.11.06

[Pytest] 2. Pytest 명령어 옵션 (command)

Pytest 명령어 옵션 1. 해당 디렉토리 내 모든 test_.py, *_test.py 실행 $ pytest 2. 특정 디렉토리 내부 실행 $ python -m pytest / 3. 특정 테스트 함수만 실행시 (k 옵션) $ pytest .py -k 4. 하나라도 Fail시 멈추고 싶을 때 $ pytest -x 5. 각 테스트 함수 결과 출력 (보다 자세히) $ pytest -vv 6. . 모든 test 실행 결과 출력 pytest -rA (pass포함) pytest -ra (pass 제외) 7. 결과에 Color 입히고 싶을때 (kernel 창 등에서 쓰기 좋음) $ pytest --color=yes 8. 캐시 파일 초기화 - 정확성에 대한 CI 과정에 사용 권장 (clear-cache ) $ pyt..

Python/Advanced 2022.11.05

[Pytest] 1. Pytest란? (+ 프레임워크 별 사용)

Pytest란? Python 코드를 단위 테스트 (= 유닛테스트) 하기 위한 TEST Framework로, Python 기반 프로젝트의 TDD (Test Driven Development)에 주로 사용 과거 TDD 종류 기반 정리 글 링크 [SW 개발] 테스트 중심의 개발 TDD (with. Unit, E2E, Integration) "의도하지 않은 결함 수가 많아지면 개발자는 변경을 주저한다" 테스트 주도 개발 (TDD) 란? Test Driven Development 의 약자로 테스트 주도 개발이란는 뜻을 가지는 소프트웨어 개발 방법론 중 하나이 yubi5050.tistory.com Pytest 특징 테스트를 작성하는 데 있어 함수만 정의하면 되므로 편리 (단, pytest만의 고유한 방식을 익혀야 ..

Python/Advanced 2022.11.04

[Python 심화] Python의 GIL과 느린 이유

Python이 느린 이유 🎈 1. 파이썬은 C, Java와 달리 동적 타입 언어이다. 정적 타입 언어는 사전에 자료형을 명시하는 경우이고, 동적 타입 언어란 자료형을 명시하지 않는 경우의 언어이다. 아래 덧셈 연산으로 비교해보면 파이썬이 훨씬 더 절차가 복잡한 것을 알 수 있다. C언어 파이썬 int a=1; int b=2; int c = a+b; a=1 b=2 c=a+b 컴파일(자료형 판단 완료) => a에 1할당 => b에 2할당 => 덧셈 연산 호출 => 결과 c에 할당 a에 1할당 => a타입판단 => a 값 정수 1 설정 => b에 1할당 => b타입판단 => b 값 정수 2 설정 => 덧셈 연산 호출 => 객체 c 생성 => c자료형 정수 설정 => c 값 정수 3 설정 🎈 2. 파이썬은 인터..

Python/Advanced 2022.08.24