Python

    [미니터] unit-test 시 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 오류

    1. 간단한 unit-test 구현 후 사용자 생성과 로그인 트윗올리기 등 다른 test의 코드를 작성하고 실행중 오류 발생. 2. 비밀번호도 틀리지 않았는데 이전에도 실행이 됐는데 구글을 쥐잡듯이 뒤졌지만 해결하지 못했음. 부팅도 2번이나 함. 3. root로 들어갈 수 조차 없었음. Mysql user가 2개 있었는데 그 어떤 것도 계속 제목과 같은 에러가 났음. 4. 그 결과 터미널에서도 workbench에서도 sql명령어를 실행할 방법이 없었음. 5. 어떤분이 docker를 사용해서 mysql을 실행한 후 명령창에 접근한 방법을 보았음. -> 참고 : https://velog.io/@uoayop/ERROR-1045-28000-Access-denied-for-user-rootlocalhost-usi..

    [미니터] test - 미니터 unit test

    [미니터] test - 미니터 unit test

    Flask의 엔드포인트는 함수로 구현되어 있어 unit test를 직접 할 수 있는 장점이 있다. 1. test_endpoint.py 파일 생성 2. test용 DB 만들기 3. test 코드 작성 import pytest import config from app import create_app # test할 플라스크 앱 호출 (미니터 API가 있는 코드파일) @pytest.fixture # fixture 데코레이터가 적용된 함수와 같은 인자가 test 함수에 있으면 pytest 알아서 실행 def api() : # fixture의 함수명 app = create_app(config.test_config) app.config['TEST'] = True api = app.test_client() return..

    [미니터] Test - 테스트 자동화

    [미니터] Test - 테스트 자동화

    1. 테스트의 종류 매뉴얼 테스트 : 사람이 직접 실행 장점 : 누구나 직관적으로 계획없이 가능 단점 : 실행 속도가 느리고 시간이 오래걸림. 자주 하기가 힘들고 정확도가 떨어진다. 테스트 자동화 : 반복적이고 자주 실행될 수 있도록 함 2. 테스트 방법 UI test / End-To-End test : 사용자가 실제로 사용하는 방식과 동일하게 시스템의 UI를 통해서 테스트한다. - 단점 : 프론트엔드에서 백엔드 까지 모든 시스템을 실행해야 할 수 있음. 시간이 많이 걸리며 속도도 느리다. 화면 렌더링을 모두 자동화 시키기 까다롭다. -> 자동화에 어려움이 있다. integration test : 테스트 하는 서버를 실제로 실행하며 테스트 HTTP 요청이나 서버 실행 요청 명령 등을 실행하여 테스트 - ..

    [미니터] 인증 구현시 ValueError : Invalid salt과 AttributeError: 'str' object has no attribute 'decode'에러

    1. ValueError : Invalid salt 에러 sign-up(회원가입) 후 로그인에서 비밀번호를 확인하는 과정에서 에러가 났다. # sign-in 엔드포인드 # json으로 들어온 값 중 password를 해시해서 DB insert new_user['password'] = bcrypt.hashpw(new_user['password'].encode('UTF-8'), bcrypt.gensalt()) # 사용자 로그인 엔드포인트 password = credential['password'] # 입력으로 들어온 비밀번호 저장 bcrypt.checkpw(password.encode('UTF-8'), user_credential['hashed_password'].encode('UTF-8')) hashpw(..

    [미니터] 인증 - tweet, follow, unfollow에 decorator 추가

    [미니터] 인증 - tweet, follow, unfollow에 decorator 추가

    app.py 코드 수정하기 # 트윗올리기 @app.route('/tweet', methods = ["GET","POST"]) @login_required # 인증 데코레이터 추가 def tweet() : user_tweet = request.json user_tweet['id'] = g.user_id # flask 객체 g tweet = user_tweet['tweet'] if len(tweet) > 300 : return '300자를 초과했습니다', 400 insert_tweet(user_tweet) return " " , 200 # 팔로우 @app.route('/follow', methods = ["GET","POST"]) @login_required # 인증 데코레이터 추가 def follow() ..

    [미니터] 인증 - 인증 decorator 함수

    인증 절차가 필요한 tweet, follow, unfollow 엔드포인트에 추가. 함수에서 같은 기능을 필요로 하는 경우 : 파이썬 데코레이터를 활용하여 구현. 파이썬 functools 모듈의 wraps decorator 함수를 사용한다. 엔드포인트에 추가할 decorator 함수 import jwt from functools import wraps from flask import current_app, request, Response def login_required(f) : @wraps(f) def decorated_function(**args, **kwargs) : access_token = request.headers.get('Authorization') if access_token is not ..