>  기사  >  백엔드 개발  >  Python 서버 프로그래밍: pytest를 사용한 테스트 중심 개발

Python 서버 프로그래밍: pytest를 사용한 테스트 중심 개발

王林
王林원래의
2023-06-18 21:57:06999검색

Python은 강력하고 인기 있는 프로그래밍 언어로서 서버 측 프로그래밍에 매우 적합합니다. 서버 측 프로그래밍의 가장 중요한 측면 중 하나는 테스트입니다. 애플리케이션이 아무리 완벽하더라도 안정성과 정확성을 보장하기 위해 항상 테스트해야 하기 때문입니다.

이제 TDD(Test Driven Development) 방법을 사용할 때입니다. TDD는 실제로 코드를 작성하기 전에 테스트 케이스를 작성하는 것을 의미합니다. 이 접근 방식을 사용하면 테스트 사례가 버그를 찾고 수정하는 데 도움이 될 수 있으므로 안정적이고 신뢰할 수 있는 애플리케이션을 더 쉽게 작성할 수 있습니다. 매우 존경받는 테스트 프레임워크 중 하나는 pytest입니다.

이 기사에서는 pytest를 사용한 테스트 기반 개발 프로세스에 대해 논의하겠습니다.

먼저 예제를 만들어 보겠습니다. 단어의 정의를 얻고 품사에 따라 검색할 수 있는 웹 애플리케이션을 만들겠습니다.

이 애플리케이션에서는 다음 클래스와 메서드를 작성해야 합니다.

Word 클래스 - 단어를 나타내며 품사와 정의의 일부를 포함합니다.

class Word:
    def __init__(self, word, part_of_speech, definition):
        self.word = word
        self.part_of_speech = part_of_speech
        self.definition = definition

Dictionary 클래스 - 단어 정의를 추가하고 쿼리하는 메서드가 포함된 사전을 나타냅니다.

class Dictionary:
    def __init__(self):
        self.words = []

    def add_word(self, word, part_of_speech, definition):
        new_word = Word(word, part_of_speech, definition)
        self.words.append(new_word)

    def search(self, query):
        results = []
        for word in self.words:
            if query in word.definition:
                results.append(word)
        return results

이제 두 클래스가 있으므로 테스트 사례 작성을 시작해 보겠습니다.

우리는 pytest를 사용하여 테스트 케이스를 작성할 것입니다. pytest는 간단하고 유연한 Python 테스트 프레임워크입니다.

먼저 pytest를 설치해야 합니다. pip를 사용하여 pytest를 설치할 수 있습니다.

pip install pytest

다음으로 프로젝트 폴더에 test_dictionary.py 파일을 생성해 보겠습니다. 이 파일의 코드에는 Dictionary 및 Word 클래스를 테스트하는 데 사용할 테스트 사례가 포함됩니다.

먼저 Word 클래스를 테스트하기 위한 테스트 케이스를 작성하겠습니다. 우리는 각 단어의 인수가 올바르게 저장되었는지 테스트하기 위해 Assert 문을 사용할 것입니다.

class TestWord:
    def test_init(self):
        w = Word('test', 'noun', 'this is a test')
        assert w.word == 'test'
        assert w.part_of_speech == 'noun'
        assert w.definition == 'this is a test'

단어, 품사, 정의가 단어의 입력 매개변수로 올바르게 설정되었는지 확인하기 위해 Assert 문을 사용합니다.

이제 Dictionary 클래스를 테스트하기 위해 몇 가지 테스트 사례를 작성하겠습니다.

class TestDictionary:
    def test_add_word(self):
        d = Dictionary()
        d.add_word('apple', 'noun', 'a fruit')
        assert len(d.words) == 1
        assert d.words[0].word == 'apple'
        assert d.words[0].part_of_speech == 'noun'
        assert d.words[0].definition == 'a fruit'

    def test_search(self):
        d = Dictionary()
        d.add_word('apple', 'noun', 'a fruit')
        d.add_word('banana', 'noun', 'another fruit')
        d.add_word('carrot', 'noun', 'a vegetable')
        results = d.search('fruit')
        assert len(results) == 2
        assert results[0].word == 'apple'
        assert results[1].word == 'banana'

이 테스트 사례를 통해 사전 클래스가 단어를 올바르게 추가하고 검색 방법을 사용할 때 결과를 올바르게 반환하는지 테스트할 수 있습니다.

이제 테스트 케이스를 실행하여 통과하는지 확인합니다. 터미널에서 다음 명령을 사용하여 pytest를 실행합니다.

pytest

모든 테스트가 통과하면 다음과 유사한 출력이 표시됩니다.

============================== test session starts ==============================
platform linux -- Python 3.x.y, pytest-6.x.y, py-1.x.y, pluggy-1.x.y
rootdir: /path/to/project
collected 3 items                                                              

test_dictionary.py ...                                                    [100%]

=============================== 3 passed in 0.01s ===============================

이는 테스트 사례가 통과되었고 사전 및 단어 클래스가 정상 작동한다는 의미입니다.

테스트 중심 개발을 위해 pytest를 사용하면 코드를 작성하기 전에 테스트 사례를 작성할 수 있으므로 코드 품질과 안정성을 보장하는 데 도움이 됩니다. pytest는 사용하기 쉽고 강력하며 대부분의 Python 서버 측 프로그래밍 테스트 요구 사항을 충족할 수 있는 매우 인기 있는 테스트 프레임워크입니다.

위 내용은 Python 서버 프로그래밍: pytest를 사용한 테스트 중심 개발의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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