[파이썬] pytest 클래스 단위에서의 테스팅

테스팅은 소프트웨어 개발의 중요한 부분이며, 소프트웨어의 품질을 보장하는 데 도움이 됩니다. pytest는 파이썬의 인기 있는 테스트 프레임워크로, 간편하게 테스트를 작성하고 실행할 수 있습니다. 이 글에서는 pytest를 사용하여 파이썬 클래스 단위에서 테스트를 작성하는 방법에 대해 알아보겠습니다.

pytest 테스트 클래스 작성하기

pytest를 사용하여 테스트 클래스를 작성하려면, 테스트 클래스를 정의하고 test_으로 시작하는 메서드를 작성해야 합니다. 이 메서드들은 클래스의 다양한 측면을 테스트하고 예상된 결과를 확인하는 데 사용됩니다.

class TestCalculator:
    def test_addition(self):
        calculator = Calculator()
        result = calculator.add(2, 3)
        assert result == 5

    def test_subtraction(self):
        calculator = Calculator()
        result = calculator.subtract(5, 3)
        assert result == 2

위의 예제에서는 TestCalculator라는 테스트 클래스를 작성하였습니다. 이 클래스에는 test_additiontest_subtraction이라는 두 개의 테스트 메서드가 있습니다. 각 메서드는 테스트하려는 기능을 실행하고 예상된 결과를 확인하기 위해 assert 문을 사용합니다.

pytest 테스트 실행하기

pytest를 사용하여 클래스 단위 테스트를 실행하려면, 테스트 파일을 작성하고 터미널에서 pytest 명령어를 사용하여 실행하면 됩니다. pytest는 테스트 파일 내의 모든 테스트를 자동으로 찾아 실행합니다.

$ pytest test_calculator.py

실행결과를 터미널에서 확인할 수 있고, 파이썬 IDE에서도 테스트 결과를 확인할 수 있습니다.

pytest 테스트 결과 확인하기

pytest는 테스트 결과를 자세하게 보고해줍니다. 성공한 테스트는 .으로 표시되고, 실패한 테스트는 F로 표시됩니다. 실패한 테스트의 경우 어떤 부분이 실패했는지 상세한 정보를 제공하여 디버깅에 도움이 됩니다.

================================== FAILURES ===================================
_________________________________ TestCalculator.test_addition _____________________

self = <test_calculator.TestCalculator object at 0x7f4b541c2c10>

    def test_addition(self):
        calculator = Calculator()
>       result = calculator.add(2, 3)
E       NameError: name 'Calculator' is not defined

test_calculator.py:6: NameError

위의 예제에서는 Calculator라는 클래스가 정의되지 않아서 실패한 테스트의 예시입니다. pytest는 실패한 테스트의 에러 메시지와 스택 트레이스를 제공하여 에러의 원인을 파악하는 데 도움이 됩니다.

결론

pytest를 사용하여 파이썬 클래스 단위에서 테스트를 작성하는 방법에 대해 알아보았습니다. pytest는 테스트 작성과 실행을 간편하게 만들어주며, 테스트 결과의 자세한 보고는 디버깅을 용이하게 합니다. 이제 pytest를 사용하여 코드의 품질을 검증하고 버그를 발견하기 위한 테스트 작성에 도전해보세요!