플러터에서 게비게이터(navigator)로 화면을 이동하는 코드를 작성하고 실행하였는데, 아래와 같은 에러가 발생했다. The following assertion was thrown while handling a gesture: Navigator operation requested with a context that does not include a Navigator. The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget. 에러 내용을 해석하면, '네비게이터에서 이동하려면 사용되는 콘텍스트(context)는 네비게이터 위젯의 하위 위젯..
깃을 공부하면서 로컬 저장소에서 원격 저장소로 git push 하는 중에 다음과 같은 에러가 발생했다. hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for..
파이썬 3.9를 기준으로 파이썬 타입 어노테이션을 사용하는 방법에 대해서 알아보자. 이 문서는 공식문서를 바탕으로 만들었다. NewType Callable Generics Any NoReturn tuple Union Optional type Literal ClassVar Final AnyStr Protocol runtime_checkable NamedTuple TypedDict # 파이썬 타입 어노테이션을 적용하기 전에 확인해야 할 점 타입 어노테이션은 파이썬 3.5부터 추가가 되었다. 그리고 현제까지도 계속 관련 기능이 추가되고 있는 상황이다. 이 말은 곧 호환성을 고려해야 한다는 것이다. 특히 파이썬 3.9에서 많은 부분이 변경되었다. 그러므로 자신이 사용하는 파이썬 환경을 고려해서 어노테이션을 작성..
파이썬의 타입 어노테이션(type annotation)에 대해서 알아보자. 타입 어노테이션에 대해서 알기 위해선 우선 파이썬의 특징을 잠시 알아하고 왜 타입 어노테이션이 필요한지 설명하겠다. # 파이썬은 동적 타입 언어다 a = 1 a = '1' 파이썬은 식별자에 값을 넣으면 아주 쉽게 변수를 만들 수 있다. 그리고 어떤 값이든 넣을 수 있다. 위에서 a에 int 타입인 1을 넣었고, 바로 str 타입인 '1'을 넣었다. 이렇게 식별자에 타입을 정하지 않고 실행 중에 타입을 확인하는 프로그래밍 언어를 동적 타입 언어라고 한다. # 파이썬은 덕 타이핑을 쉽게 할 수 있다 이런 동적 타입 언어의 기능으로 파이썬은 정말 쉽게 코드를 작성할 수 있게 된다. 예를 들어 다음은 컬렉션의 요소를 출력하는 함수다. d..
파이썬 3.5부터 타입 힌트를 지원하기 위해서 어노테이션(annotation)이 추가되었다. 어노테이션을 이용해서 코드를 작성하던 중, 클래스의 메서드의 리턴 타입을 해당 클래스로 어노테이션으로 작성하니 에러가 났다. # 예제 코드 다음 코드에서 Dollar의 times 메서드는 Dollar를 리턴한다. class Dollar(Money): def __init__(self, amount: int): self._amount: int = amount def times(self, multiplier: int) -> Dollar: return Dollar(self._amount * multiplier) 하지만 vscode에서는 Dollar가 정의되어 있지 않았다면서 에러가 발생한다. # 해결 방법 열심히 구글링..
vscode에서는 파이썬 unittest를 기본 설정으로 잘 사용하고 있었다. 그리고 시간이 지날수록 테스트 파일이 많아져서 테스트를 패키지 별로 디렉터리를 만들어서 분리를 해 주었다. 하지만 테스트를 디렉터리로 분리하니 vscode의 테스트에서 테스트 파일들을 찾지 못했다.이를 해결하기 위해서는 setting.json에서 unittest를 재설정이 필요하다. # 1. setting.json 설정하기 vscode에서 탐색기로 파이썬 프로젝트 디렉터리를 열면 관련 설정 파일이 .vscode 디렉터리에 저장된다. unittest 설정파일도 이 디렉터리의 settings.json에 저장된다. { "python.testing.unittestArgs": [ "discover", "-s", "tests", "-p"..
파이썬의 unittest 단위 테스트 프레임워크에서 자주 사용하는 assert 메서드에 대해서 알아보자. # 값 검사 메서드 TestCase 클래스는 값을 검사하고 실패를 보고하기 위해 assert 메서드를 제공한다. 모든 assert 메서드는 msg 인자를 추가로 받기 때문에 실패 시 출력 메시지를 전달할 수 있다. 메서드 검사하는 내용 추가된 버전 assertEqual(a, b) a == b assertNotEqual(a, b) a != b assertTrue(x) x is True assertFalse(x) x is False assertIs(a, b) a is b 3.1 assertIsNot(a, b) a is not b 3.1 assertIsNone(x) x is None 3.1 assertIs..
파이썬 unittest 단위 테스트 프레임워크는 테스트 메서드 내부의 반복문에서 부분 테스트(subtest)를 사용할 수 있도록 지원한다. # 테스트 메서드의 반복문 예제 예를 들어 다음 테스트는 for문에 i가 짝수인지를 확인하는 테스트 코드가 있다. import unittest class NumbersTest(unittest.TestCase): def test_even(self): for i in range(0, 6): self.assertEqual(i % 2, 0) test_even (__main__.NumbersTest) ... FAIL ====================================================================== FAIL: test_even (__..