ホームページ > バックエンド開発 > Python チュートリアル > Python サーバー プログラミング: pytest を使用したテスト駆動開発

Python サーバー プログラミング: pytest を使用したテスト駆動開発

王林
リリース: 2023-06-18 21:57:06
オリジナル
1035 人が閲覧しました

Python は強力で人気のあるプログラミング言語として、サーバーサイド プログラミングに非常に適しています。サーバーサイド プログラミングの最も重要な側面の 1 つはテストです。アプリケーションがどれほど完璧であっても、その安定性と正確性を確認するために常にテストする必要があるからです。

今こそ、テスト駆動開発 (TDD) 手法を使用する時期です。 TDD とは、実際にコードを記述する前にテスト ケースを作成することを意味します。このアプローチでは、テスト ケースがバグの発見と修正に役立つため、安定した信頼性の高いアプリケーションをより簡単に作成できます。高く評価されているテスト フレームワークの 1 つは pytest です。

この記事では、pytest を使用したテスト駆動開発のプロセスについて説明します。

まず、例を設定してみましょう。単語の定義を取得し、品詞に基づいてそれを取得できる Web アプリケーションを作成します。

このアプリケーションでは、次のクラスとメソッドを記述する必要があります。

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
ログイン後にコピー

これら 2 つのクラスができたので、テスト ケースの作成を始めましょう。

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'
ログイン後にコピー

これらのテスト ケースを通じて、Dictionary クラスが単語を正しく追加し、検索メソッドを使用したときに結果を正しく返すかどうかをテストできます。

次に、テスト ケースを実行して、合格するかどうかを確認します。ターミナルで、次のコマンドを使用して 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 ===============================
ログイン後にコピー

これは、テスト ケースが合格したことを意味します。 Word クラスは正常に動作します。

テスト駆動開発に pytest を使用すると、コードを記述する前にテスト ケースを作成できるため、コードの品質と信頼性を確保できます。 pytest は非常に人気のあるテスト フレームワークで、使いやすく強力で、ほとんどの Python サーバーサイド プログラミング テストのニーズを満たすことができます。

以上がPython サーバー プログラミング: pytest を使用したテスト駆動開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート