누구든지 테스트 메서드를 호출하기 직전에 호출되고 호출 된 직후 호출되는 테스트 케이스를 작성하는 동안 Python setUp
과 tearDown
메서드 의 사용을 설명 할 수 있습니까 ?setUp
tearDown
답변
일반적으로 setUp에 모든 필수 단계를 추가하고 tearDown에 모든 정리 단계를 추가합니다.
여기 에서 예제를 통해 더 많은 것을 읽을 수 있습니다 .
setUp () 메서드가 정의되면 테스트 실행기는 각 테스트 전에 해당 메서드를 실행합니다. 마찬가지로 tearDown () 메서드가 정의 된 경우 테스트 실행기는 각 테스트 후에 해당 메서드를 호출합니다.
예를 들어 항목이 존재하거나 특정 상태가 필요한 테스트가 있으므로 이러한 작업 (객체 인스턴스 생성, db 초기화, 규칙 준비 등)을 설정에 넣습니다.
또한 각 테스트는 시작된 위치에서 중지해야합니다. 즉, 앱 상태를 초기 상태로 복원해야합니다 (예 : 파일 닫기, 연결, 새로 생성 된 항목 제거, 트랜잭션 콜백 호출 등). 단계는 tearDown에 포함되어야합니다.
따라서 테스트 자체에는 결과를 얻기 위해 테스트 개체에서 수행 할 작업 만 포함되어야하며 setUp 및 tearDown은 테스트 코드를 깨끗하고 유연하게 유지하는 데 도움이되는 메서드입니다.
여러 테스트에 대한 setUp 및 tearDown을 만들고 부모 클래스에서 정의 할 수 있으므로 이러한 테스트를 지원하고 일반적인 준비 및 정리를 쉽게 업데이트 할 수 있습니다.
쉬운 예제를 찾고 있다면 예제 와 함께 다음 링크 를 사용하십시오.
답변
이를 사용하여 테스트 스위트의 모든 테스트에 공통적 인 코드를 제외 할 수 있습니다.
테스트에 반복되는 코드가 많으면이 코드를 setUp / tearDown으로 이동하여 더 짧게 만들 수 있습니다.
테스트 데이터 (예 : 가짜 / 모의 설정)를 생성하거나 가짜로 함수를 스터 빙하는 데 사용할 수 있습니다.
통합 테스트를 수행하는 경우 setUp에서 환경 사전 조건 확인을 사용하고 제대로 설정되지 않은 경우 테스트를 건너 뛸 수 있습니다.
예를 들면 :
class TurretTest(unittest.TestCase):
def setUp(self):
self.turret_factory = TurretFactory()
self.turret = self.turret_factory.CreateTurret()
def test_turret_is_on_by_default(self):
self.assertEquals(True, self.turret.is_on())
def test_turret_turns_can_be_turned_off(self):
self.turret.turn_off()
self.assertEquals(False, self.turret.is_on())
답변
10 개의 테스트가있는 모음이 있다고 가정합니다. 8 개의 테스트는 동일한 설정 / 해체 코드를 공유합니다. 다른 2 개는 그렇지 않습니다.
설정 및 분해는 이러한 8 개의 테스트를 리팩토링하는 좋은 방법을 제공합니다. 이제 다른 두 가지 테스트로 무엇을합니까? 다른 테스트 케이스 / 스위트로 이동합니다. 따라서 설정 및 분해를 사용하면 테스트를 케이스 / 스위트로 분류하는 자연스러운 방법을 제공 할 수 있습니다.