파이썬 테스트 3

GitHub Actions를 활용한 CI 구축

Open Domain Question Answering 프로젝트를 진행하면서 코드를 수정하여 merge할 때마다 해당 코드에 문제가 없는지 테스트를 진행해야 할 필요성을 느꼈다. train과 inference가 평균적으로 1시간 가까이 걸리기 때문에 코드의 문제가 뒤늦게 발견되는 경우 시간 낭비가 심했다. 따라서 코드가 master branch에 merge될 때마다 테스트가 자동으로 수행될 수 있도록 CI 환경을 구축하기로 결정했다. 요구사항 CI 환경을 구축하면서 내가 정의한 요구사항은 다음과 같다. 1. 사전에 코드의 문제를 파악하기 위해 다양한 가능성을 고려한 테스트를 진행한다. 테스트를 위한 파이썬의 내장 모듈인 unittest가 존재하지만, unittest는 테스트 작성을 위해 반드시 클래스를 ..

Backend/기타 2023.06.17

[pytest] Fixture

Fixture 테스팅을 하는데 있어서 필요한 조건들을 미리 준비해놓은 리소스 또는 코드 예) 특정 조건으로 구성된 데이터베이스, 데이터 셋 Fixture 생성 예시 @pytest.fixture 데코레이터를 함수에 붙여 fixture로 만들 수 있다. import pytest @pytest.fixture def my_fruits(): return ["apple", "banana", "grape", "orange"] Fixture를 사용하지 않는 경우 def test1(): fruits = ["apple", "banana", "grape", "orange"] assert len(fruits) == 4 def test2(): fruits = ["apple", "banana", "grape", "orange"]..

Backend/pytest 2023.06.10

[pytest] 파이썬 테스팅을 위한 pytest 사용법

pytest 설치 방법 pip install pytest pytest 실행 방법 1. 현재 디렉토리에서 테스트 pytest 현재 디렉토리 내에 존재하는 test_*.py 또는 *_test.py 형식의 파일들을 모두 테스트한다. 2. 특정 파일만 테스트 # pytest pytest test_file.py 3. 특정 경로에서 테스트 # pytest pytest testing/ 이 때, 테스트해야 하는 파일의 이름은 test_*.py 또는 *_test.py 형식이어야 한다. 4. 특정 키워드를 갖는 요소만 테스트 # pytest -k pytest -k 'MyClass and not method' keyword expression에 부합하는 이름을 갖는 파일, 클래스, 함수를 테스트한다. 위 명령어를 입력할 경..

Backend/pytest 2023.06.09