vscodeでpytestを使う
vscodeでpytestを使う環境を作る時に毎回説明するのが大変なので手順を記載する。
テストができる環境までを記載する。
pytestの使い方とかは他の方が書いた記事を参考にしてください。
環境
Windows 10 からリモート デベロップメントでUbuntuに繋いで環境を作る 接続先はUbuntu 20.04.5 LTS(Python 3.8.10) 最低限Ubuntuに接続してpythonのデバッグができるようにするための拡張をvscodeに入れる
- テストを実行するのに利用したソースファイル一式をダウンロード
vscode
# バージョンを固定してコマンドでRemote Developmentの拡張機能をインストール code --install-extension ms-vscode-remote.vscode-remote-extensionpack@0.23.0
UbuntuへRemote Developmentで接続後
code --install-extension ms-python.python@2022.18.2 code --install-extension hbenl.vscode-test-explorer@2.21.1
pytestとpytest-mockのインストール
テスト用のライブラリのpytestsとmockを使うためのpytest-mockをインストールする
$ python3 -m pip install --upgrade pip ← pipのバージョンを最新版に更新する $ python3 -m pip install pytest pytest-mock ← pytestとpytest-mockをインストール
テストに利用するソースコードの構成(テスト用のコードが含まれていない状態)
ダウンロード
ファイル構成
. ├── master.py └── module ├── calculation.py ├── __init__.py └── users.py
ソースファイル
ソースコード(クリックで展開)
- master.py
from module import add, get_user_address def main_add(): X = 10 Y = 20 ans = add(X, Y) print(ans) def main_address(): USER_ID = 1 res = get_user_address(USER_ID) print(res) if __name__ == "__main__": main_add() main_address()
- module/__init__.py
from .calculation import add from .users import get_user_address __all__ = ["get_user_address", "add"]
- module/calculation.py
def add(x: int, y: int) -> int: res = x + y return res
- module/users.py
from typing import TypedDict import requests class Geo(TypedDict): lat: str lng: str class Address(TypedDict): street: str suite: str city: str zipcode: str class Company(TypedDict): name: str catchPhrase: str bs: str class User(TypedDict): id: int name: str username: str email: str address: Address geo: Geo phone: str website: str company: Company def fetch_user_data(user_id: int) -> User: url = f"https://jsonplaceholder.typicode.com/users/{user_id}" res = requests.get(url) res.raise_for_status() return res.json() def get_user_address(user_id: int) -> Address: res = fetch_user_data(user_id) address = res["address"] return address
テストコードの作成
テスト用のファイルとてテストで必要となるファイルを以下の構成となるように作成する。 testsディレクトリを作成して、その中に__init__.pyとtest_add.pyを作成する。
. ├── master.py ├── module │ ├── calculation.py │ ├── __init__.py │ └── users.py └── tests ├── __init__.py └── test_add.py
__init__.py
- ファイルさえ存在していれば中身は空でOKです。
test_add.py
from module.calculation import add # テストで実行してほしい内容を記載したメソッド class TestAdd: def test_add_success(self, mocker): # テストで実行してほしい内容を記載したメソッド ans = 30 X = 10 Y = 20 add_ans = add(X, Y) assert ans == add_ans def test_add_failure(self, mocker): # テストで実行してほしい内容を記載したメソッド ans = 50 X = 10 Y = 20 add_ans = add(X, Y) assert ans == add_ans
vscodeでテストができるように設定を追加
- vscodeの画面上で「ctrl + shift + p」を押してコマンドパレットを開く。
- 開いたコマンドパレットに「test」を入力。
- 「Python テストを構成する」を選択。
- pytestを選択。
- テストコードの入っているディレクトリ「tests」を選択。
- test/test_add.pyを開いてみて以下の様な状態になっていたらテストが実行可能。
vscodeでテストを実行
いちばん簡単なテストを実行
▶を押してテストを実行する。
テストに成功した場合は○が表示され、失敗した場合は✗が表示される。