programing

파이썬 유닛 테스트에서 setUp()와 setUpClass()의 차이점은 무엇입니까?

mytipbox 2023. 7. 17. 23:06
반응형

파이썬 유닛 테스트에서 setUp()와 setUpClass()의 차이점은 무엇입니까?

사이의 차이점은 무엇입니까?setUp()그리고.setUpClass() 파썬로에서unittest 워크 프레임 워크?설정이 다른 방법보다 한 방법으로 처리되는 이유는 무엇입니까?

설의어부분다음수알싶행다습니고지는되서에정이떤▁▁is▁of▁에서 어떤 부분의 을 하는지 알고 .setUp()그리고.setUpClass()능기및용과 tearDown()그리고.tearDownClass().

클래스에 둘 이상의 테스트 방법이 있을 때 차이가 나타납니다. setUpClass그리고.tearDownClass 한 번 됩니다.setUp그리고.tearDown각 테스트 방법 전후에 실행됩니다.

예:

class Example(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("setUpClass")

    def setUp(self):
        print("setUp")

    def test1(self):
        print("test1")

    def test2(self):
        print("test2")

    def tearDown(self):
        print("tearDown")

    @classmethod
    def tearDownClass(cls):
        print("tearDownClass")

이 테스트를 실행하면 다음이 인쇄됩니다.

setUpClass
setUp
test1
tearDown
.setUp
test2
tearDown
.tearDownClass

점(()점().가 표시됩니다.unittest테스트 통과 시 의 기본 출력입니다.)그것을 .setUp그리고.tearDowntest1 그리고. test2에, 면에반에.setUpClass그리고.tearDownClass전체 테스트 사례의 시작과 끝에 한 번만 나타납니다.

사이의 차이점은 무엇입니까?setUp()그리고.setUpClass() 파썬로에서unittest 워크 프레임 워크?

(벤자민 호지슨의 답변에서 언급한 바와 같이) 주요 차이점은setUpClass에 한 , 단 번 호 출 그 전 테 모 니 입 다 에 반 면 트 스 만 든 한 되 은 것 고 ▁is 에 반 면 다 ▁while 니 , ▁and 전 ▁all ▁calledsetUp각 (. (: Python의 )unit▁(▁just▁in▁isunit▁xn▁▁equivalent▁the▁others▁called▁(다▁to적니▁python됩n▁framework▁immedi▁each'▁the▁same▁applies,))).)unittest.)

unittest 설명서:

setUpClass()

개별 클래스의 테스트가 실행되기 전에 호출되는 클래스 메서드입니다. setUpClass는 클래스를 유일한 인수로 사용하여 호출되며 클래스 메서드()로 꾸며져야 합니다.

@classmethod
def setUpClass(cls):
    ...

그리고:

setUp()

테스트 픽스처를 준비하기 위해 호출되는 메서드입니다.이것은 테스트 메서드를 호출하기 직전에 호출됩니다. AssertionError 또는 SkipTest를 제외하고 이 메서드에서 발생한 예외는 테스트 실패가 아닌 오류로 간주됩니다.기본 구현에서는 아무런 작업도 수행하지 않습니다.

설정이 다른 방법보다 한 방법으로 처리되는 이유는 무엇입니까?

질문의 이 부분은 아직 답변되지 않았습니다. 제 Gearon의 답변에 Gearon은setUp방법은 모든 테스트에 공통적인 고정장치 요소에 대한 것입니다(각 테스트에서 해당 코드가 중복되지 않도록).중복을 제거하면 가독성이 향상되고 유지 관리 부담이 줄어들기 때문에 종종 유용합니다.

setUpClass메소드는 데이터베이스 연결 열기, 파일 시스템의 임시 파일 열기, 테스트를 위한 공유 라이브러리 로드 등과 같이 한 번만 수행하면 되는 값비싼 요소를 위한 것입니다.각 테스트 전에 이러한 작업을 수행하면 테스트 세트 속도가 너무 느려지기 때문에 모든 테스트 전에 한 번만 수행합니다.이는 검정의 독립성을 약간 저하시키지만 일부 상황에서는 필요한 최적화입니다.일반적으로 실제 데이터를 사용하지 않고 데이터베이스/파일 시스템/라이브러리/무엇이든 조롱할 수 있기 때문에 단위 테스트에서 이러한 작업을 수행해서는 안 됩니다.이와 같이, 나는 그것을 발견합니다.setUpClass거의 필요하지 않습니다.그러나 위의 예제(또는 유사한 예제)를 테스트해야 할 경우 유용합니다.

위에서 언급했듯이, 설정() 및 해체()는 각 테스트 후 및 테스트 전에 실행됩니다.그러나 SetupClass() 및 TearDownClass()는 전체 클래스에 대해 한 번만 실행됩니다.

setUp()그리고.setUpClass()Python 유닛 테스트 프레임워크의 메서드는 테스트를 실행하기 전에 테스트 환경을 설정하는 데 사용됩니다.과 같습니다

방법 그것은 언제라고 불립니까? 그것은 무엇에 사용됩니까?
setUp() 각 테스트 방법을 실행하기 전에 각 개별 테스트 방법에 대한 테스트 환경 설정
setUpClass() 한 번, 클래스의 모든 테스트가 실행되기 전에 전체 클래스에 대한 테스트 환경 설정

다음은 사용할 수 있는 몇 가지 예입니다.setUpClass()setUp():

  1. 클래스의 모든 테스트에서 사용할 데이터베이스 연결 또는 웹 드라이버를 만들어야 하는 경우.
  2. 일부 초기 데이터를 데이터베이스에 로드해야 하는 경우.
  3. 일부 글로벌 구성 옵션을 설정해야 하는 경우.

일반적으로 다음을 사용해야 합니다.setUpClass()클래스의 모든 테스트를 실행하기 전에 한 번만 수행해야 하는 작업의 경우.당신은 야합다니해를 사용해야 .setUp()각 개별 테스트 방법을 실행하기 전에 수행해야 하는 작업의 경우.

tearDown()그리고.tearDownClass()방법은 테스트가 실행된 후 테스트 환경을 해체하는 데 사용됩니다.tearDown()각 테스트 방법이 실행된 후에 메소드가 호출됩니다.tearDownClass()메서드는 클래스의 모든 테스트가 실행된 후에 호출됩니다.이러한 방법은 데이터베이스 연결 또는 웹 드라이버와 같이 테스트에 사용된 리소스를 정리하고 테스트 환경을 초기 상태로 재설정하는 데 사용됩니다.

이것이 도움이 되길 바랍니다!

언급URL : https://stackoverflow.com/questions/23667610/what-is-the-difference-between-setup-and-setupclass-in-python-unittest

반응형