-
[TEST] 2.테스트 코드 작성하기Python 2021. 10. 24. 23:57
이전 글 2021.10.23 - [개발 고민들] - [TEST] 1. 테스트를 시작하게 된 계기
코드

# tests/conftest.py @pytest.fixture def client(): app = create_app() app.config["TESTING"] = True app.testing = True with app.test_client() as client: app.config["SQLALCHEMY_DATABASE_URI"] = "db url" with app.app_context(): db.create_all() yield client db.session.rollback() db.session.close() # db.drop_all() # 모든 테스트에서 테이블 삭제로 인한 속도가 느려짐 # 테스트 속도 향상을 위해 모든 테스트가 끝난 후에 db 테이블 삭제 def pytest_sessionfinish(session, exitstatus): """whole test run finishes.""" app = create_app() app.config["SQLALCHEMY_DATABASE_URI"] = "db url" with app.app_context(): db.drop_all()# tests/test_action.py 의 일부분 def test_get_action_by_id(client, api_helpers): # arrange - create action data = {"name": "test-action-by-id"} url = "/api/actions/" response = client.post(url, data=json.dumps(data), headers=api_helpers.headers) action_id = api_helpers.convert_response_to_dict(response)["result"] # act get_response = client.get(f"/api/actions/{action_id}") # assert assert get_response.status_code == 200테스트 코드을 작성하며...
- 먼저 테스트 코드 작성(다양한 케이스 생각하고 개별 테스트 함수 생성)
- 해당 테스트를 통과하기 위한 기능 추가 또는 수정
- 해당 기능 리팩토링
- 위 순서를 지키기 위해 노력했으나 보통 1,2이 섞이고, 2,3이 섞이면서 개발을 진행했던거 같다.
- 1번을 진행하며 해당 기능에 정확한 역할에 대해 생각해 보고 다양한 테스트 케이스 생각하기
- 2번을 진행하며 일부/전체 테스트 진행하여 다른 기능에 영향을 주는 지 확인
- 3번 리팩토링(가독성, 네이밍, 의존성 등 고려)
'Python' 카테고리의 다른 글
Python Asyncio - 코루틴, 크롤링 (0) 2022.01.18 OOP - 상속,변수, 초기화- Crawling/Custom Exceptions (0) 2022.01.13 객체 지향 프로그래밍 - 크롤러 개발 (0) 2021.10.12 Python - Clean code - better/good/bad examples (0) 2021.02.10 Python 3.8 new features (0) 2021.02.10