繁体   English   中英

vscode python无法递归地发现单元测试

[英]vscode python fail to discover unit tests recursively

我有一个像这样简单的python单元测试......

项目/ calc/ calc.py calc_test.py

calc.py 有两个函数 sum() 和 diff(),calc_test.py 有两个测试用例来测试这些函数,使用 python 内置的 unittest 框架。

我使用 Visual Studio 代码作为我的编辑器。 如果我将顶级工作区设置为“项目”目录,那么 VS Code 将无法发现任何测试。 但是,如果在“calc”目录下重新打开 VS Code,它会识别测试并显示很好的覆盖(“运行测试”、“调试测试”等)。

如果我将单元测试移动到上一级(到 proj/),那么它也可以工作。 我记得是参数“-s”和目录“。” 应该从运行“python -m unittest <..>”命令的顶级目录递归查找“ test .py”文件。

"python.unitTest.unittestEnabled": true,
"python.unitTest.unittestArgs": [
    "-v",
    "-s",
    ".",
    "-p",
    "*test*.py"
],

从 proj/ 我手动运行“python -m unittest discover -s . -p” test .py” -v,测试被发现并运行没有任何问题。我想 VS Code 也应该在内部运行类似的命令,但有些东西是这里不见了。

这使得 VS Code 看起来无法从顶级目录递归查找测试。 我正要在 VS Code 的 Python 扩展( https://github.com/Microsoft/vscode-python/issues/new )上打开一个问题,但想根据贡献指南首先在这里检查。

我将此作为答案发布,因为我对无法以我当前的声誉级别发表评论感到沮丧,但这并不能通过将__init__.py添加到您正在测试的文件夹中来解决。 我会继续尝试回答这个问题,因为它现在是一个答案。

当您在大型项目的文件夹中测试模块时,只需使用file菜单打开文件夹,将实际文件夹作为 VSC 视图打开,然后在根目录(或最多一个目录深度)中执行Python Test Configuration ,它会生成那个init .py 文件(这显然不是 VSC 无法找到嵌套测试的原因)。

这解决了问题(尽管不允许您保持整个项目处于打开状态),并且还可以将您的文件树简化为手头的特定任务。

我尝试了多种方法,包括各种命令,但这似乎是解决这种奇怪行为的相当优雅的解决方案。

是的,我承认这个问题很古老,但显然仍与最新版本的 VSC 相关。

解决方法是在测试用例所在的每个文件夹中添加__init__.py

Visual Studio Code 中的 Python 测试

提示:有时无法发现放置在子文件夹中的测试,因为此类测试文件无法导入。 要使它们可导入,请在该文件夹中创建一个名为__init__.py的空文件。

如果您在 VS Code 中打开project ,那么您希望将-s设置为./calc以获取您的测试(这实际上与 VS Code 无关,并且完全由unittest包驱动)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM