매개변수화를 사용한 Python의 동적 단위 테스트
소개
매개변수화는 단위의 기술입니다. 다양한 입력 데이터 세트를 사용하여 테스트 생성을 자동화하는 테스트입니다. 이를 통해 개발자는 다양한 시나리오로 코드를 철저하게 테스트하여 견고성과 안정성을 보장할 수 있습니다.
pytest 데코레이터로 매개변수화
매개변수화에 대한 인기 있는 옵션 중 하나는 pytest 데코레이터를 사용하는 것입니다. 테스트 클래스에 @parametrize 데코레이터를 추가하고 다음과 같이 값 목록을 추가하기만 하면 됩니다.
from pytest import mark class TestSequence(unittest.TestCase): @mark.parametrize( ["name", "a", "b"], [ ["foo", "a", "a"], ["bar", "a", "b"], ["lee", "b", "b"], ] ) def test_sequence(self, name, a, b): self.assertEqual(a, b)
이 데코레이터는 목록의 각 값 집합에 대해 자동으로 별도의 테스트를 생성합니다.
매개변수화된 라이브러리로 매개변수화
또 다른 옵션은 매개변수화된 라이브러리를 사용하는 것입니다. 이 라이브러리를 사용하면 동일한 테스트가 어떻게 나타나는지 보여줍니다.
from parameterized import parameterized class TestSequence(unittest.TestCase): @parameterized.expand([ ["foo", "a", "a"], ["bar", "a", "b"], ["lee", "b", "b"], ]) def test_sequence(self, name, a, b): self.assertEqual(a, b)
두 경우 모두 결과는 동일합니다. 제공된 데이터를 기반으로 여러 테스트가 생성되므로 코드를 철저하게 테스트할 수 있습니다.
매개변수화를 위한 독창적인 접근 방식
위에 설명된 방법은 현대적이고 널리 사용되지만, 테스트 방법을 동적으로 생성하는 오래된 접근 방식이었습니다. 그러나 이 접근 방식은 더 이상 일반적으로 사용되지 않으며 역사적인 이유로만 언급됩니다.
import unittest l = [["foo", "a", "a",], ["bar", "a", "b"], ["lee", "b", "b"]] class TestSequense(unittest.TestCase): pass def test_generator(a, b): def test(self): self.assertEqual(a,b) return test if __name__ == '__main__': for t in l: test_name = 'test_%s' % t[0] test = test_generator(t[1], t[2]) setattr(TestSequense, test_name, test) unittest.main()
위 내용은 Python에서 매개변수화를 사용하여 동적 단위 테스트를 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!