pytest와 pytest-cov를 저는 같이 쓰는 편입니다. report를 할 때 굳이 coverage 측정이 필요 없는 것이 있을 텐데요. 이들을 제외하는 방법을 알아보겠습니다. pytest는 7.2.2, coverage는 7.2.2, pytest-cov는 4.0.0 버전에서 실습하였습니다. 먼저, 프로젝트 request_ex의 구조입니다. pg1 패키지에 a.py가 있고, pg2 패키지에 b.py가 있습니다. 다음에 root에 main.py가 있고, .coveragerc가 있는데요. 이 .coveragerc는 coverage 관련 설정을 적어놓습니다. main.py입니다. pg1.a로부터 feature_a를 import하고, pg2.b로부터 feature_b를 import 했네요. test_a에는,..
코딩/파이선 검색 결과
어떤 프로그램을 테스트 할 때 pytest를 쓰는 편입니다. 이번 시간에는 print 문으로 출력한 것을 어떻게 콘솔로 볼 수 있는지 알아보겠습니다. 기본적으로 pytest는 capture 옵션을 fd로 받게 되어 있습니다. 이는 문서에도 나와 있는 부분이에요. 1번과 2번 데스크립터에 쓰여지는 내용, 즉 표준 출력과 오류가 모두 캡쳐되는 것이 default입니다. 실험을 하나 해 보겠습니다. 예제 프로그램 1번은 test_feature_a라는 함수를 만들었습니다. 간단하게 "1"을 표준 출력에 출력합니다. 그런데, 1이라는 것은 출력되지 않았습니다. 이는, 문서에 따르면 캡쳐되었기 때문입니다. 이것은 어떨까요? 1.txt에 1이라는 내용을 쓰는 프로그램입니다. 역시 테스트는 성공하였습니다. 1.txt에..
python에서 정말 긴 문자열을 여러 줄에 걸쳐서 표현할 수 있는 방법이 없을까요? 가장 먼저 생각해 볼 수 있는 방법은, 배열로 만든 다음에 "".join으로 연결해 버리는 것입니다. 위 예제를 보겠습니다. 문자열을 이루는 문자열들을 str_set에다가 모아 놓았습니다. 다음에 "".join으로 str_set에 있는 문자열들을 모두 join해서 출력하게 됩니다. 출력 결과를 보겠습니다. abcdef가 나오는군요. 그런데, (로 감쌀 수도 있습니다.위와 같이 입력해 봅시다. 그래도 똑같이 나옵니다. 긴 문자열도 2가지 방법으로 깔끔하게 정돈할 수 있습니다. 당연하게도 이 방법을 응용하면 여러 줄로 이루어진 문자열도 깔끔하게 선언할 수 있습니다. (를 이용한 방식을 봅시다. 뒤에 "\n"을 붙여주었습니다..
안녕하세요. 이번 시간에는 datetime.datetime에 있는 astimezone 함수에 대해서 알아봅시다. 현재 제 컴퓨터의 표준 시간대는 UTC +09:00 서울입니다. utc 시간대보다 9시간 빠르다는 의미입니다. datetime.strptime은 문자열을 datetime.datetime으로 바꿔줍니다. 4번째 줄에서 v.tzinfo를 출력합니다. 다음에, pytz의 timezone을 이용해서 타임존을 "America/New_York"으로 바꿔주는데요. 여기서 중요한 것은, UTC 시간은 같지만, 로컬 시간에 맞춰서 변경됩니다. 이게 무슨 소리인가? 기준 시간은 같지만 로컬 시간이 다르다는 의미입니다. utc 시간은 같지만, 이를 지역 시간에 맞춰 출력한다는 이야기입니다. 출력 결과를 보면서 이..
실수 x가 0보다 크거나 같을 때 소수점 n째 자리에서 버림, 올림을 하는 방법을 알아보겠습니다. 먼저, math의 floor와 ceil에 대해서 간단하게 알아봅시다. floor는 x보다 작거나 같은 수 중, 가장 큰 것을, ceil은 x보다 크거나 같은 정수 중 가장 작은 것을 돌려줍니다. -1.3이 있습니다. 이것보다 작거나 같은 수들에는 -2, -3, ... 이 있습니다. 이들 중 가장 큰 것은 -2이니, floor(-1.3)은 -2가 리턴됩니다. -1.3보다 큰 것은 -1, 0, 1 .. 이 있습니다. 이 중, 가장 작은 것은 -1이므로 ceil(-1.3)은 -1이 됩니다. 다음에 -1보다 작거나 같은 수는 -1, -2, ... 가 있어요. 이 중 제일 큰 것은 -1이니 floor(-1)은 -1이..
최근댓글