(25.08.21)
pytest기반 초기 테스트 실행 velog
위 글에서처럼 pytest기반으로 한 테스트 코드 환경 설정을 마쳤지만, 현재 사용중인 app.py에 등록된 api들이 사실상 Integral한 작업을 수행하다보니 UnitTest를 구성하기에 어려움이 있었다(ex. /search를 수행하면 무조건 슬랙 알림이 온다던지..)
그리하여 리팩토링 필요성을 체감한 뒤, 아래의 과정으로 리팩토링 계획을 세워봤다.
고로 현재 api호출 시 response의 status_code만 확인하는 구조를 사용하고 있는데, 원활한 api unit test및 integral테스트를 위해 현재의 api부터 리팩토링해보자.
현재 app.py에서 라우팅을 담당하는 함수는 다음과 같다.(총 14개)
index()
result()
api_questions()
receive_ping()
api_products()
log_click()
page_not_found(e)
chat()
log_event()
sitemap()
robots()
get_price()
get_intro()
get_product_card()
또한 내장 함수는 다음과 같다.(총 3개)
send_slack_alert(message)
fetch_price_and_link(query)
fetch_naver_img(query)
unit test이전에 현재 진행할 flask api의 리팩토링의 목표는 불필요한 코드의 삭제 및 기능 단위 함수 분리 및 재사용이다.
기본적으로 route는 request를 인자로 받고 response를 반환하는 구조이다.
index()
수행하는 기능: 유저 쿠키 관리, 사용자 방문 로깅, index.html 렌더링
변경사항: 내장함수 cookie_manage(request, response)를 정의 후 쿠키 설정&로깅 수행, index에서는 make_response 수행
단위테스트: test_cookie_manager_new_user(client), test_cookie_manage_existing_user(client)
비고:
result()
수행하는 기능: 현재시간 가져오기, 쿼리 가져오기, 쿠키 체크, 로깅, 슬랙알림, result.html 렌더링
변경사항: cookie_manage함수 사용, 로그출력 순서에서 시각 정보를 뒤로 이동
단위테스트: test_slack_api(client)
비고: 위 함수는 result.html을 랜더링 시키고 구체적인 로직은 result.js에서 이루어지기에 별도의 테스트는 없이 slack api test만 진행.
sudo firewall-cmd --add-port=5000/tcp --permanent
suddo firewall-cmd --reload
docker build -t com-on:1.0
docker run -d -p 5000:5000 --name com-on-container com-on:1.0
토큰 만료 없이 새로 생성한 뒤 github 토큰 갱신하기 velog에 따라 수행했다.
그 후 commit시 root가 안뜨게 하기 위해
# git config --global --edit
# git config --global user.name "choijiwoong"
# git config --global user.email "gogogi313@naver.com"
으로 vim을 사용하여 사용자이름, 이메일을 세팅해두었다.
이거 토큰을 매번 입력하라해서