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 サイトの他の関連記事を参照してください。