空飛ぶ気まぐれ雑記帳

主に趣味とかプログラミングについて扱います。

VSCodeでPythonのTestが自動検出されない話

VSCodePythonを書いていて、Testが自動検出されなくて困っていた。
VSCodeはUnit testのデバッグがワンボタンでできるため、結構便利に使っていたのだが、PCを買い替えてVSCodeの設定を飛ばしてからTestの検出がされなくて困っていた。

ネットの海を泳いでも回答は得られず、公式ドキュメントを読み返していると以下のようなTipsを見つけた

Tip: Sometimes tests placed in subfolders aren't discovered because such test files cannot be imported. To make them importable, create an empty file named __init__.py in that folder.

つまり、サブフォルダにテストが配置されるケースにおいて__init__.pyがないフォルダは上手く検出できないから、そういう時はフォルダに__init__.pyを追加してね。とのことだ。
Python 3.9がリリースされて久しい昨今、__init__.pyが無いフォルダがimportできないPython 3.3以前の古代兵器を使う人は随分少ないはずだ。
にも関わらず、現代も上記のような仕様になっているらしい。

実はsetuptoolsも似たような仕様で__init__.pyの無いフォルダはpackageに追加することができないようになっている(ファイルを直接コピーすることで対応できなくはないが…)。
正直、Pythonの仕様と関連ツールの仕様のミスマッチが激しいところがPythonらしいと感じてしまったが、それでも何とかならないものか。