>  기사  >  백엔드 개발  >  Python 연구 노트 - 단위 테스트, UnitTest

Python 연구 노트 - 단위 테스트, UnitTest

黄舟
黄舟원래의
2017-01-17 14:25:371158검색

소위 단위 테스트는 모듈, 함수 또는 클래스의 정확성을 테스트하는 테스트 유형입니다.


테스트 중심 개발 방식을 테스트 중심 개발이라고 합니다. 이 개발 모델은 단순한 테스트가 아니라 요구 사항을 분해하고 코드 품질을 보장하는 방법입니다.


단위 테스트는 테스트 중에 기능, 모듈 또는 클래스가 우리의 요구 사항을 충족하는지 확인할 뿐만 아니라 동시에 이는 나중에 클래스나 함수를 수정하는 데에도 도움이 됩니다. 수정 사항이 함수에 영향을 미치지 않는지 확인하기 위해 단위 테스트만 다시 실행하면 됩니다.


물론 단위 테스트를 하면 코드의 양도 크게 늘어납니다.


단위 테스트 코드를 작성하려면 Python의 단위 테스트 패키지를 도입해야 합니다. 새로운 단위 테스트 클래스를 생성할 수 있지만 이 클래스는 unitest.TestCase 클래스를 상속해야 합니다. 테스트 클래스의 테스트 메소드는 test로 시작해야 합니다. 그렇지 않으면 실행되지 않습니다. 그런 다음 unitest.TestCase의 메서드를 사용할 수 있습니다. 일반적으로 사용되는 방법은 다음과 같습니다.


assertEqual(self, first, second) #기대값인지 판단
assertTrue(bool) #참인지 판단
assertRaises(예외) #참인지 거짓인지 판단 특정 예외를 발생시킵니다.

예를 들어보겠습니다.


먼저 클래스 사용자 정의 클래스를 정의한 다음 단위 테스트를 수행합니다.


Dict.py

class Dict(dict):
def __init__(self, **kwargs):
super(Dict, self).__init__(**kwargs)
def __getattr__(self, item):
try:
return self[item]
except KeyError:
raise AttributeError
def __setattr__(self, key, value):
self[key] = value
import unittest
from Dict import Dictclass DictTest(unittest.TestCase):
def test_init(self):
d = Dict(a=100, b=200)
self.assertEqual(d.a, 100)
self.assertEqual(d.b, 200)
self.assertTrue(isinstance(d, dict))
def test_key(self):
d = Dict()
d['key'] = "300"
self.assertEqual(d["key"], "300")
def test_attar(self):
d = Dict()
d.attar = "attar"
self.assertTrue("attar" in d)
self.assertEqual(d.attar, "attar")
def test_keyError(self):
d = Dict()
with self.assertRaises(KeyError):
value = d["NotExisted"]
def test_attarError(self):
d = Dict()
with self.assertRaises(AttributeError):
value = d.not_existed
if __name__ == '__main__':
unittest.main()

dict의 하위 클래스를 정의했기 때문에 해당 키와 값을 동시에 테스트해야 합니다. 클래스이므로 해당 속성도 테스트해야 합니다.


우리가 정의한 unittest.TestCase 하위 클래스는 일반 Python 파일처럼 실행하기 전에

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

라는 두 문장을 작성해야 합니다.


또한 다음과 같은 방법으로 여러 테스트를 실행할 수도 있습니다


python -munittest DictTest
setUp 및 TearDown 함수.

setUp 및 TearDown 함수는 두 가지 특수 함수입니다. setUp은 모든 단위 테스트가 시작되기 전에 실행되고, teeDown 함수는 모든 단위 테스트가 실행된 후에 실행됩니다. 이 두 함수의 주요 애플리케이션 시나리오는 다음과 같습니다. 예를 들어 데이터베이스에 연결해야 할 때 setUp 함수에서 연결을 시작하고 TearDown 함수에서 연결을 닫을 수 있습니다.

위는 Python 학습 노트 - 유닛 테스트, UnitTest 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.