4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PythonのPytestでTDDするときimportがエラーになる

Last updated at Posted at 2021-03-06

あらすじ

Pytestを使っていて気が付いたことです。
これは入門者泣かせですね。

どこのPythonを使うのかっていう指定があっちこっち散乱しているという悪夢。

別なのかよ

F5デバッグや、Debug testでは正常にインポートされますが、Run testすると下記のエラーが出ました。

E ModuleNotFoundError: No module named `??????????`

Pythonでは、importするときの Base Directory として、sys.path内にリストされたアドレスを使います。

PylintやF5デバッグ、Debug testでは、settings.jsonpython.envFile内に記述した、PYTHONPATH=./が Base Directory です。

ところがRun testでは、Base Directory を決める際に、実行するテストのあるディレクトリから上に向かって検索し、__init__.pyが無い最初のディレクトリを Base Directory として登録するようです。

Note: Good Integration Practices

上記リンク切れです。2021/04/12→ここ

The src directory layout is still strongly recommended however.

「src - tests」スタイルのディレクトリ構成がものすごくオススメされています。

環境

.vscode/extensions.json
{
	"recommendations": [
		"ms-python.python",
		"visualstudioexptteam.vscodeintellicode",
		"oderwat.indent-rainbow",
		"kameshkotwani.google-search"
	]
}
.vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "env": {"PYTHONPATH":"./"},
            "justMyCode": true
        }
    ]
}
.vscode/settings.json
{
    "python.testing.pytestEnabled": true,
    "python.formatting.provider": "black",
    "python.envFile": "${workspaceFolder}/.env",
}

Excelsior!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?