Twisted によるテスト駆動開発
導入
ここでは、 このアドレスにあるチュートリアル「Test-Driven Development with Twisted」を取り上げ、PyCharm を使って同じ内容を試してみます。
プロジェクト、パッケージ、Python ファイルの作成
に移動し、 新規プロジェクト ダイアログで純粋な Python プロジェクトの作成を選択します。 それを Calculus と呼びましょう。
空の __init__.py ファイルを含む calculus という空のディレクトリを作成します。 これを行うには、メインメニューで に移動し、 新規 ポップアップメニューから Python パッケージ を選択します。
次に、Python ファイルを作成します。 これを行うには、メインメニューで再度 に移動し、ポップアップで Python ファイル を選択します。 このファイルは base_1.py と呼ばれ、すぐに編集できるようになります。 次のコードを入力します。
次に、パッケージ calculus を右クリックして、Python パッケージをもう一度作成します。今回は test という名前にしてください。
パッケージのインストール
テストを実行するには、 Twisted(ツイステッド) パッケージをインストールする必要があります。 それ以外にも、Windows で作業している場合は、パッケージ pypiwin32 もインストールしてください。
PyCharm で必要なパッケージをインストールする最も簡単な方法は、設定ダイアログを開き、 ページを表示することです。 このページの パッケージツールバー セクションで、 をクリックし、 使用可能なパッケージ ダイアログで必要なパッケージを選択します。 詳細については、 パッケージのインストール、アンインストール、アップグレードを行う をご覧ください。
必要なテストランナーの選択
再度、 設定 ダイアログ(Ctrl+Alt+S )の ツール ノードで、 統合ツール ページをクリックします。
このページで、 デフォルト テストランナー フィールドのリストからテストランナー Twisted Trial を選択します。
変更を適用して、ダイアログを閉じます。
失敗したテストの作成
クラス宣言の横にあるファイル base_1.py を右クリックして、 Ctrl+Shift+T を押すか、コンテキストメニューから を選択します。 Create Test ダイアログでデフォルト設定にいくつか変更を加える必要があります:
まず、 ターゲットディレクトリ フィールドの横にある参照ボタンをクリックし、 test パッケージを選択します。
次に、 テストファイル名 フィールドに test_base_1.py という名前を、 テストクラス名 フィールドに TestBase_1 という名前を入力します。 最後に、すべてのメソッドを選択します。これで、テスト対象クラスのすべてのメソッド用のテストも含まれます。
次のコードを取得する必要があります:
これは動作するクラスですが、Twisted 用のテストを書いています… パッケージをインポートしましょう。 次のコードになります:
TDD(Test-Driven Development)のアイデアがコードの前にテストを書いているため、実際のテストをしましょう:
ちなみに、プロジェクトツールウィンドウを見てみましょう。プロジェクトの構造が表示されます。 現在、4 ファイルがあります:
calculus/__init__.py
calculus/base_1.py
calculus/test/__init__.py
calculus/test/test_base_1.py
失敗したテストの実行
このテストを実行してみましょう。 これを行うには、テストファイル test_base_1.py を編集するために開き、エディターの背景を右クリックして、コンテキストメニューから 実行 'Twisted Trial for test_base_1.CalculationTestCase' を選択します。
予想どおり、すべてのテストは失敗しました。

プロジェクトツールウィンドウにはもう 1 つのディレクトリ( _trial_temp )が表示されます。 これにはログファイルが含まれています:

テストをパスする
テストするクラスを変更して、テストをパスしましょう。 そのために、 base_1.py スクリプトを変更します。 ファイルのコードは次のようになります。
test_base_1.py をもう一度実行しましょう。 これを行うには、エディターの背景を右クリックし、 実行 'Twisted Trial for test_base_1.CalculationTestCase' を選択します。 今回はテストに合格します:
