【发布时间】:2021-03-13 14:28:00
【问题描述】:
通过在命令行中执行pytest,在开发人员模式下(pip install -e .)对使用pip 安装的项目代码运行测试确实有效。但是,使用 Visual Studio Code 的测试资源管理器 UI 在同一 Python virtualenv 中运行相同的测试不起作用,Python 会引发 ModuleNotFoundErrors。
我确认我的包是由pip list -v 安装的,它会打印:
myproject 0.0.0 /path/to/myproject
此外,我编写了失败的测试以在测试执行期间获取 Python 路径:
import sys
def test_some_test():
print(sys.executable)
print(sys.path)
assert False
这确认了 Python 可执行文件是我的项目代码安装在 virtualenv 中的那个。但是 sys.path 在测试资源管理器运行和命令行运行之间有所不同。测试资源管理器运行不包含sys.path 中的/path/to/myproject,而命令行运行包含。很明显,如果项目的路径包含在sys.path中,就可以导入包了。为什么测试资源管理器 UI 运行中缺少它?如何让Test Explorer使用pip在开发模式下安装的包?
我应该补充一点,我在测试中尝试导入的模块本身位于一个包中,称为mylib。所以我测试中的实际导入就像
from mylib import function_under_test
def test_function_under_test():
...
【问题讨论】:
标签: python visual-studio-code pip pytest