Backend/Flask 개발일지

    20. miniter API Unit test 2

    20. miniter API Unit test 2

    ● ping 엔드포인트 테스트 코드 작성 def test_ping(api): # 1 resp = api.get('/ping') # 2 assert b'pong' in resp.data # 3 # 1. ping 엔드포인트를 테스트하는 함수, 여기서 api는 위의 코드인 def api 함수의 리턴값인 test clinet를 자동으로 적용시켜준다. # 2. test clinet의 get 메소드를 통해서 가상의 GET 요청을 /ping URL 와 연결되어있는 엔드포인트에 보낸다. # 3. 위의 2를 실행 후 리턴받은 응답의 body에 "pong" 이라는 텍스트가 포함되어 있는지 확인한다. "pong" 앞에 붙어있는 b 는 해당 스트링을 byte로 변환시켜 주는 역할을 한다. resp.data가 스트링이 아닌 b..

    19. miniter API Unit test 1

    19. miniter API Unit test 1

    miniter API 를 Unit test 하기 위해 새로 test_endpoints.py 파일을 생성한다. 일단 파일만 만들고 테스트를 할 DB를 만든다. unit test의 테스트 DB에 접속할 수 있도록 config.py 파일을 수정한다. db = { 'user' : 'root', 'password' : 'qwer123123!', 'host' : 'localhost', 'port' : 3306, 'database' : 'miniter' } DB_URL = f"mysql+mysqlconnector://{db['user']}:{db['password']}@{db['host']}:{db['port']}/{db['database']}?charset=utf8" test_db = { 'user' : 'test..

    18. 단위 테스트 (Unit test) 와 여러 테스트들

    18. 단위 테스트 (Unit test) 와 여러 테스트들

    테스트를 하는것은 중요하지만 그보다 더 중요한 것은 테스트를 자동화 시키는 것이다. 사람이 직접 테스트 하는 것을 메뉴얼 테스트 (manual test) 라 하는데 직접 일일이 하는 것이므로 테스트 속도와 시간이 오래 걸린다는 것이 문제다. 그렇기 때문에 인력과 시간이 부족한 현장에서는 테스트 자동화가 중요하다는 것이다. 이 책에서는 3가지 테스트 방법을 소개한다. UI test / End-To-End test UI를 통해서 하는 테스트 ,프론트엔드 부터 백엔드 까지 실행시키고 연결해야 하는 테스트 이기 때문에 오래걸리며 완벽하게 자동화 하기 까다롭다. 이 책의 저자는 10% 정도는 UI test 를 할 것을 권장한다. Intergration test 지금까지 해 왔던 것이 바로 이 테스트이다. 기능을 ..

    14. 인증 (Authentication)절차와 비밀번호 암호화

    14. 인증 (Authentication)절차와 비밀번호 암호화

    지금까지 SQLAlchemy 로 miniter API 와 DB를 연결하였다. 여기서 인증 엔드포인트를 구현하지 않고 그대로 배포 한다면 마음대로 수정하고 안에 있는 정보를 빼앗길 가능성이 매우, 몹시 커질 것이다. 심지어 public API에도 남용 방지, 사용자 통계등의 이유로 인증 API가 꼭 필요하다고 하니 반드시 알고 만들어봐야 할 것이다. 더 나아가서 한 단계 더 높은 보안을 위해 비밀번호 암호화도 알아보기로 한다. 그런데 인증 이라고 하면 보통 Certification 인데 어째서 Authentication 일까? 하고 찾아보니 Certification 은 일정한 기준을 넘었을때 쓰는 단어고 Authentication 은 권한이 있는지에 대한 확인 여부 라고 한다. 우리가 쓰는 공용인증서가 C..