공부일지

[Python]unittest 쓰는 법 + if __name__ == '__main__' 쓰는 이유 본문

Computer/공부정리

[Python]unittest 쓰는 법 + if __name__ == '__main__' 쓰는 이유

이르리의 공부일지 2023. 11. 24. 12:36

 

모듈 실행 결과를 볼 때 

단위별로 확인하려면 unittest 라이브러리를 쓰자!

python 내장 라이브러리라고 한다.

 

 


 

 

from unittest import TestCase

class TestCase(TestCase):
    def test_return_calc(self):
        self.assertEqual(1+2, 3)

 

python3 -m unittest unit_test.py

 

 

하거나

 

from unittest import TestCase

class TestCase(unittest.TestCase):
    def test_return_calc(self):
        self.assertEqual(1+2, 3)

 if __name__ == '__main__':
     unittest.main()

 

python3 unit_test.py

 

 

하면 된다.

 


 

그러면 결과로

1+2 = 3 의 의미로

Okay 가 출력된다!

 

<결과>

======================================================================

FAIL: test_return_Others (__main__.TestCase.test_return_calc)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "<파일명>", line 8, in test_return_calc

    self.assertEqual(1+2, 3)

AssertionError: None != 100



----------------------------------------------------------------------

Ran 1 test in 0.007s



FAILED (failures=1)

<파일경로>$ python3 unit_test.py 

.

----------------------------------------------------------------------

Ran 1 test in 0.006s



OK

 

 


 

 if __name__ == '__main__':
     unittest.main()

 

 

 

이 코드 블럭을 보고 (동료가 적은 것)

왜 이 조건문이 필요한지 궁금해졌다.

 

if __name__ == '__main__': 쓰는 이유 (__name__ 이라는 변수 값이 main이라면 아랠 코드를 실행하라는 뜻)

안 쓰면 import만 돼 있는 모듈도 실행돼서 각각 값이 출력/실행되기 때문이다.

 

C나 Java는 main 함수 필수이지만

Python은 없다. 그렇다면 무엇을 실행하는 것일 까?

 

 

1)파이썬 코드 실행방식

  • main() 없음
  • 들여쓰기로 level 별 실행 순서 결정(level 0-들여쓰기 없음, 이 가장 먼저 실행)

2)__name__ 내장변수

- hello.py __name__. -> hello

 

- 현재 모듈 이름 == __name__

- 직접 실행된 모듈 == __main__

- 직접 실행되지 않고 import된 모듈 == 각 모듈 이름/파일명

 

즉, 스크립트 파일이 메인 프로그램으로 사용될 때와 모듈로 사용될  때를 구분하기 위한 용도라고 한다.

직접 실행되길 원하는 코드를 써주면 되는 것임!

 

 


참고 블로그

https://velog.io/@mjk3136/if-name-main%EC%9D%80-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%9C%EC%A7%80%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

 

if __name__ == “__main__”은 왜 필요한지에 대해 알아보자

집중합시다. 집중!!🔥

velog.io