vscode で unittest の coverage 計測するために task を使う
表題通りですみません。今、python でちょっとしたツールを作っているのですが、ユニットテストも書いています。世間では pytest が人気みたいですが、何もインストールしなくて良いという安直な理由で unittest を使っています。
vscode では unittest も認識してくれていい感じで discover でテストをたどってくれているようです。
ただカバレッジは計測できないようで、愚直にターミナルから実行するのも良いのですが、coverage のコマンドをいつも忘れてしまいます。
そこで、vscode の task 機能? で予めタスクを登録することにしました。
task 機能の説明は参考ページが詳しいです。が手順だけリストアップすると
タスクを登録するには
Ctrl +p
でコマンドパレット開く- tasks: configure task
- 何か適当に選ぶと tasks.json が開く
- 追加したいタスクを記述する
こんな感じです。今回は、以下のコマンドを記述しました。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "echo Hello"
},
// ここから追加
// カバレッジの計測
{
"label": "coverage",
"type": "shell",
"command": "coverage run --source . -m unittest discover",
"options": {
"cwd": "${workspaceFolder}"
}
},
// lcov 形式に変換 (Code Coverage という vscode extension で使用するため)
{
"label": "coverage lcov",
"type": "shell",
"command": "coverage lcov",
"options": {
"cwd": "${workspaceFolder}"
},
"dependsOn": "coverage"
}
]
}
今回は、計測のためのタスクと lcov に変換する 2つのタスクを登録しました。
タスクの実行
Ctrl +p
でコマンドパレット開く- tasks: run task
- 実行したいタスクを選ぶ
これで面倒なく実行できる。
が、考えてみると makefile の方が楽な気もする。というのも tasks.json はワークスペースの .vscode に作成されるので個人的には git に入れず削除することが多い。悩ましい。
参考
【初心者でも分かる】VSCodeのtasks.jsonでタスク自動化する方法を解説 | Inno-Tech-Life