首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将VSCode与pytest集成(‘测试发现失败’)?

如何将VSCode与pytest集成(‘测试发现失败’)?
EN

Stack Overflow用户
提问于 2020-08-12 22:35:03
回答 1查看 5.2K关注 0票数 6

我无法将项目的单元测试集成到VSCode中。由于pytest无法识别源文件,所以测试发现失败。

(为了澄清起见,这是一个关于VSCode的问题,而不是关于pytest的问题。我在这里是因为VSCode将其问题部分链接到SOF。如果我手动运行它们,测试就能正常工作。)

工具:pyenvpipenvpytest

项目布局:

代码语言:javascript
运行
复制
/src -> source code
/tests/unit -> test code

..vscode/setings.json:

代码语言:javascript
运行
复制
{
    "python.envFile": "${workspaceFolder}/.env",
    "python.testing.pytestEnabled": true,
    "python.testing.pytestArgs": [
        "tests"
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false
    [...]
}

.env:

代码语言:javascript
运行
复制
PYTHONPATH=./src

(注:我认为在使用PYTHONPATH变量时,.env在注释中并不重要)

测试发现失败的原因如下:

代码语言:javascript
运行
复制
tests/unit/test_revoke_default_sg.py:7: in <module>
    from revokedefaultsg.app import RevokeDefaultSg, UnknownEventException
E   ModuleNotFoundError: No module named 'revokedefaultsg'
=========================== short test summary info ============================
ERROR tests/unit/test_revoke_default_sg.py
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
=============================== 1 error in 0.08s ===============================

这是因为./src不是python的一部分,所以测试不能导入源代码。

我可以通过添加到PYTHONPATH在CLI/makefile级别上修复这个问题:

代码语言:javascript
运行
复制
PYTHONPATH=./src pytest

这如预期的那样起作用。

VSCode的正确设置是什么?

我应该为测试创建一个启动配置吗?我已经开始研究这个问题了,但是它不能很好地与pipenv一起工作。

EN

Stack Overflow用户

回答已采纳

发布于 2020-08-13 11:15:23

(执行部分)

我认为集成到VSCode中的关键是为pytest创建一个特定的启动配置(在此之前,我只有使用Python创建的默认启动配置)。

我现在有两个配置(.vscode/launch.json):

代码语言:javascript
运行
复制
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Run Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "env": {
                "PYTHONPATH": "./src"
            }
        },
        {
            "name": "Python: pytest",
            "type": "python",
            "request": "launch",
            "module": "pytest",
            "cwd": "${workspaceRoot}",
            "env": {
                "PYTHONPATH": "./src"
            },
            "envFile": "${workspaceRoot}/.env",
            "console": "integratedTerminal",
        }
    ]
}

(GitHub项目)

启动VSCode后运行此配置将正确发现测试,而不会引发错误。但是,我还没有在不同的项目中尝试过。

另外,也许我没有找到VSCode文档的正确部分,但这感觉文档严重不足。最后,我在GitHub上搜索了一些专家,并收集了一些看似有用的东西.

票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63385586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档