项目结构类似
- a.py
- unittest
- test_a.py
A.py
class A():
def function_a(self):
return 'function_a'
test_a.py
from a import A
class TestA():
def test_a(self):
assert A().function_a() == 'function_a'
当我使用终端和set PATHONPATH=//<my-project-folder>
时,它可以通过pytest
进行检测和测试。然而,当我尝试在VS代码中调试它时,它一直抛出No module named a
。
https://code.visualstudio.com/docs/python/environments#_environment-变量定义文件
我尝试过这种方式,并在我的项目文件夹中放入了一个.env
。
.env
PYTHONPATH=C:\Repos\test-project
(我在逃跑和不逃跑的情况下都做了,但无论如何都不起作用。(
.vscode/setting.json
{
"python.pythonPath": "C:\Python27\python.exe",
"python.testing.pytestArgs": [
"unittest"
],
"python.testing.unittestEnabled": false,
"python.testing.nosetestsEnabled": false,
"python.testing.pytestEnabled": true,
"python.envFile": "${workspaceFolder}/.env",
}
要了解PYTHONPATH
环境变量的值,请使用以下test_a.py
文件
import os
def test_PYTHONPATH():
assert os.environ.get('PYTHONPATH') == "XX"
我已经用Python 3.6在Windows上测试过了。
在我的测试中,我在工作区根文件夹中设置了一个.env
,内容为
PYTHONPATH=C:Projectstest-project
运行测试时出现断言错误,并显示PYTHONPATH
的值是操作系统定义的值。
启动一个终端并从全局环境变量中删除PYTHONPATH
,并以C:Projectstest-project
为自变量从该终端启动VSC打开了项目,现在测试失败,但显示了.env
文件中定义的正确PYTHONPATH
。
我得出的结论是,操作系统环境变量(在Windows上(覆盖了VSC设置的任何环境变量。如果这是正确的,你就不能像文档中显示的那样扩展环境变量
PYTHONPATH=${PROJ_DIR}:${PYTHONPATH}
这应该作为VSC或VSC python扩展中的错误进行归档。
VSC中定义的任何内容都应该覆盖任何操作系统环境变量,并且能够使用任何操作系统的环境变量。