실패했는데 종료 코드는 0 이었다 · 버그를 시험으로 못 박는다 · 퀴즈
퀴즈: 재현하고, 고치고, 증거를 남긴다
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
버그 보고를 받았을 때 이 코스가 권하는 첫 단계는?
- 코드를 고친 뒤 통과하는 시험을 쓴다
- 지금 코드에서 실패하는 재현 시험을 먼저 쓴다
- 로그 수준을 DEBUG 로 올려 다시 돌린다
- 관련 함수 전체에 커버리지 100% 를 만든다
tmp_path 픽스처가 고정 경로 /tmp/test 보다 나은 이유는?
- /tmp 보다 디스크가 빠르기 때문이다
- pytest 가 파일 내용까지 자동으로 검증하기 때문이다
- 시험마다 고유한 디렉터리를 줘 시험끼리 간섭하지 않기 때문이다
- tmp_path 만 pathlib.Path 를 돌려주기 때문이다
monkeypatch.setattr(rotate.time, "time", lambda: 1700000000) 이 끝난 뒤 time.time 은?
- 시험이 끝나면 원래 함수로 되돌아간다
- 세션이 끝날 때까지 고정된 값을 돌려준다
- 다음 시험에서 pytest 가 경고를 낸다
- rotate 모듈을 다시 임포트해야 되돌아간다
@pytest.mark.parametrize("keep", [0, 1, 3, 10]) 을 붙인 시험 하나는 몇 개의 시험으로 실행되는가?
- 1개 — 목록을 한 번에 돌린다
- 4개 — 값마다 test_이름[값] ID 로 하나씩
- 2개 — 첫 값과 마지막 값만
- 5개 — 기본값 시험이 하나 더 붙는다
도구가 지운 파일 이름을 print 로 알린다. 이것을 시험하는 pytest 도구는?
- tmp_path — 출력을 파일로 저장해 읽는다
- monkeypatch — print 를 다른 함수로 바꾼다
- parametrize — 출력 문자열을 인자로 준다
- capsys — readouterr() 로 stdout 과 stderr 를 돌려받는다
CI 가 `pytest --junitxml=report.xml` 의 결과를 판정할 때 보는 두 가지는?
- 표준 출력에 찍힌 초록 점의 개수와 마지막 요약 줄의 문구
- 커버리지 퍼센트와 전체 시험이 걸린 시간의 합계
- report.xml 의 tests·failures·errors 속성과 pytest 의 종료 코드
- 시험 함수 이름 목록과 시험 파일의 개수