用Pytest进口VSCODE测试



我有一个项目,我想在其中vs Code的发现测试和其他测试功能,以使测试更加容易。当我尝试发现测试时,我有一个问题,可以在测试文件中断。

我有类似的文件结构:

project
  __init__.py
  package1
    module1.py
    __init__.py
  tests
    test.py
    __init__.py

在test.py中我有一条线:

import project.package1.module1 as module1

我通过在根文件夹中调用python -m project来运行我的项目,我能够通过从根文件夹调用python -m pytest project成功运行测试。

当我运行VS Code的" Discover Tests"功能或尝试使用调试器逐步浏览文件时,我会收到一个错误'modulenotfounderror:no Module nature new nater Project'。

有人知道如何解决这个问题吗?

我也有同样的问题。对我有用的解决方案是引入一个.env文件,该文件与我的工作区文件夹相对于我的PYTHONPATH条目。

PYTHONPATH="path1:path2:pathN"

然后,我在工作空间设置中添加了一行,该线路指定了我的.env文件的位置。

// ...
"python.envFile": "${workspaceFolder}/.env",
// ...

我遇到了相同的问题,即我能够在VSCODE内的终端成功运行pytestpython -m pytest,但是发现失败了。我的解决方案是通过以下方式实施失败的导入

import sys
sys.path.insert(0, '/full/path/to/package1/')
from package1.module1 import module1

请注意,vScode是打开的,project文件夹是根。

下一个解决方案适用于Linux和Windows,

import sys
from pathlib import Path
sys.path.insert(0, str(Path('package1/').resolve()))

它基于@chufolon答案。我的Stackoverflow声誉不允许我对他的答案发表评论。我更喜欢他的解决方案,因为在.env中,出于安全原因,可能会有不应共享的敏感信息(密码,...(。还因为默认通过git共享 __init__.py

相关内容

  • 没有找到相关文章

最新更新