データサイエンス

VSCodeとpytestでPythonコードをテスト&デバッグする

こんにちは、私はVSCodeでPythonコードを書く機会が多いです。
勉強も兼ねてPythonとVSCodeでの効率的な開発方法を紹介していく予定です。
この記事ではVSCodeとpytestでPythonコードをスムーズにテストする方法について説明します!

環境情報

  • OS: macOS BigSur
  • VSCode: 1.56.2 (x64)
    • 拡張機能: ms-python.python 2021.5.926500501
  • Python: 3.8.5
  • pytest: 6.2.4

ワークスペースの用意

まずはじめに、適当なディレクトリを作成しVSCodeで開きます。
その中に、以下のようにファイルを配置します。

  • (root)
    • hello.py
    • tests
      • __init__.py
      • test_hello.py

hello.py

def hello():
s = 'hello'
print(s)
def hello_error():
s = 'hello error'
print(s)
raise Exception('hello')

tests/init.py

# 空のファイル

tests/test_hello.py

def hello():
s = 'hello'
print(s)
def hello_error():
s = 'hello error'
print(s)
raise Exception('hello')

VSCodeの設定

VSCodeでpytestの設定をしていきます。

まず、はじめに使用する環境を設定しておきます。
コマンドパレット(macOSの場合、cmd + shift + p)を開き、Python: Select Interpreterを選択して使用するPythonを決定します。
f:id:gri-blog:20210617111804p:plain

次に、コマンドパレットからPython: Configure Testsを選択します。
先程選択した環境にpytestがインストールされていない場合、こちらの完了後にpytestが自動でインストールされることに注意します。
f:id:gri-blog:20210617112058p:plain

次に、pytestを選択します。unittestやnoseにも対応しているようです。
f:id:gri-blog:20210617112150p:plain

最後に、pytestのテストコードが入っているディレクトリを選択します。
今回はtestsと入力します。

以上で設定は完了です。

テストの実行

設定が完了すると、サイドバーにフラスコが表示されます。こちらを選択します。
f:id:gri-blog:20210617112746p:plain

選択すると、テストケースが一覧で表示されます。
実行したいテストケースの右側にある▶︎を選択して実行します。
f:id:gri-blog:20210617112915p:plain

実行すると、テストが通ったかどうかが表示されます。
f:id:gri-blog:20210617113144p:plain

デバッグの実行

通らなかったテストケースについてデバッグを実行してみましょう。
最初にデバッグ用のブレークポイントを設定しておきます。
f:id:gri-blog:20210617113831p:plain

次に、エラーを起こしているテストケースの▶︎の右側にある虫のアイコンを選択して実行します。
すると、ブレークポイントを設定した箇所で処理が止まり、変数やコールスタックの情報が確認できます。
f:id:gri-blog:20210617114418p:plain

おわりに

うまくテスト&デバッグできましたか?
テストケースの用意は大変ですが、トータルで見ると開発が楽になることが多いと思います。
ツールをうまく使って効率的にテスト&デバッグしていきたいですね。

仲田 勇太

参考
Testing Python in Visual Studio Code