유닛 unittest
프레임 워크를 사용하여 파이썬으로 단위 테스트를 작성하는 데 여러 단계가 포함됩니다. 아래는 단위 테스트 생성 및 실행에 대한 자세한 안내서입니다.
UnitTest 모듈 가져 오기 : 첫 번째 단계는 테스트 작성 및 실행을위한 프레임 워크를 제공하는 unittest
모듈을 가져 오는 것입니다.
<code class="python">import unittest</code>
테스트 클래스 정의 : 테스트는 unittest.TestCase
에서 상속되는 클래스로 그룹화됩니다. 이 클래스에는 개별 테스트를 정의하는 방법이 포함됩니다.
<code class="python">class TestExample(unittest.TestCase):</code>
쓰기 테스트 방법 : TestExample
클래스 내에서 단어 test
로 시작하는 메소드를 작성할 수 있습니다. 이 방법은 개별 테스트로 실행됩니다.
<code class="python">def test_example(self): self.assertEqual(1 1, 2)</code>
설정 및 중단 : 테스트에 설정 또는 정리가 필요한 경우 setUp
및 tearDown
방법을 사용할 수 있습니다. setUp
각 테스트 방법 전에 실행되며 tearDown
이후에 실행됩니다.
<code class="python">def setUp(self): # Code here will run before every test pass def tearDown(self): # Code here will run after every test pass</code>
테스트 실행 : 테스트를 실행하려면 테스트가 포함 된 경우 스크립트를 직접 실행하거나 테스트 러너를 사용할 수 있습니다. 가장 간단한 방법은 스크립트 끝에 다음 코드를 추가하는 것입니다.
<code class="python">if __name__ == '__main__': unittest.main()</code>
스크립트를 실행하면 unittest
unittest.TestCase
에서 상속되는 클래스 내에서 test
로 시작하는 모든 메소드를 자동으로 검색하고 실행합니다.
Python의 unittest
프레임 워크에서 단위 테스트를 구성 할 때 모범 사례를 준수하면 테스트가 유지 관리되고 읽기 쉬우 며 효과적입니다. 다음은 다음과 같은 주요 관행입니다.
TestCalculator
및 메소드의 test_addition
. 이를 통해 각 테스트가 확인하려는 내용을 빠르게 이해하는 데 도움이됩니다.배열-액트-어제 패턴 : 배열-액트-어제 패턴을 사용하여 테스트 방법을 구조화하십시오.
주장 : 결과를 확인하십시오.
<code class="python">def test_addition(self): # Arrange calc = Calculator() # Act result = calc.add(2, 3) # Assert self.assertEqual(result, 5)</code>
setUp
및 tearDown
방법을 사용하여 테스트 비품을 관리하여 각 테스트가 깨끗한 슬레이트로 시작하도록합니다.setUp
사용하여 객체를 초기화하고 tearDown
필요한 경우 리소스를 정리하십시오. 중대한 코드 복제를 찾지 않는 한 테스트로 인라인으로 수행 할 수있는 작업에는 사용하지 마십시오. 설명 오류 메시지 사용 : assertEqual
같은 어설 션을 사용할 때 사용자 정의 메시지를 추가하여 잘못된 내용을 명확히 할 수 있습니다. 이는 실패 테스트를 디버깅 할 때 특히 유용합니다.
<code class="python">self.assertEqual(result, 5, "The addition of 2 and 3 should be 5")</code>
주장은 unittest
에서 중요합니다. 코드의 출력이 예상 결과를 충족하는지 확인합니다. 효과적으로 사용하는 방법은 다음과 같습니다.
올바른 어설 션 방법을 선택하십시오 : unittest
각각 특정 비교를 위해 설계된 몇 가지 어설 션 방법을 제공합니다.
assertEqual(a, b)
: a == b
확인합니다.assertNotEqual(a, b)
: a != b
확인합니다.assertTrue(x)
: x
가 true인지 확인합니다.assertFalse(x)
: x
가 false인지 확인합니다.assertIs(a, b)
: a
가 b
인지 확인합니다 (객체 아이덴티티).assertIsNot(a, b)
: a
가 b
가 아닌지 확인합니다.assertIn(a, b)
: a
가 b
에 있는지 확인합니다. b.assertNotIn(a, b)
: a
아닌지 확인하십시오. b
.테스트 조건에 가장 적합한 어설 션을 선택하십시오.
사용자 정의 메시지 사용 : 복잡한 테스트의 경우 어설 션이 실패한 이유를 설명하는 사용자 정의 메시지를 제공하는 것이 도움이됩니다.
<code class="python">self.assertEqual(result, 5, "Expected 5 but got {}".format(result))</code>
가장자리 사례를 테스트하십시오 : 어설 션을 사용하여 일반적인 경우뿐만 아니라 모서리 사례 및 오류 조건을 검증하십시오. 예를 들어, 경계 조건, 유효하지 않은 입력 및 예상 예측을 테스트합니다.
<code class="python">def test_division_by_zero(self): with self.assertRaises(ZeroDivisionError): Calculator().divide(10, 0)</code>
예상 예외 예외를 위해 컨텍스트 관리자를 사용하십시오 . 특정 예외를 기대하는 경우 assertRaises
Context Manager를 사용하십시오.
<code class="python">with self.assertRaises(ValueError): Calculator().sqrt(-1)</code>
unittest
로 단위 테스트를 작성할 때 고품질 테스트를 유지하기 위해 피해야 할 일반적인 함정을 알고 있어야합니다.
setUp
및 tearDown
유용하지만 과잉을 사용하면 테스트 종속성과 테스트가 느려질 수 있습니다. 테스트 비품을 설정하거나 자원을 정리하는 데 필요한 경우에만 사용하십시오.이러한 함정을 피함으로써 장치 테스트가 강력하고 유지 관리 가능하며 코드의 기능을 효과적으로 검증 할 수 있습니다.
위 내용은 UnitTest 프레임 워크를 사용하여 Python에서 단위 테스트를 어떻게 작성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!