我有一个简单的python单元测试......
项目/ 钙/ calc.py calc_test.py
calc.py有两个函数sum()和diff(),calc_test.py有两个测试用例来测试这些函数,使用python内置的unittest框架。
我正在使用Visual Studio代码作为我的编辑器。如果我将顶级工作区设置为“项目”目录,那么VS代码将无法发现任何测试。但是,如果在“calc”目录下重新打开VS Code,则它会识别测试并显示漂亮的叠加层(“运行测试”,“调试测试”等)。
如果我将单元测试移动到上面一级(到proj /),那么它也可以。我的回忆是参数“-s”和目录“。”应该从顶级目录递归查找“ test .py”文件,其中“python -m unittest< ..>”命令运行。
"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代码(https://github.com/Microsoft/vscode-python/issues/new)的Python扩展中打开一个问题,但是想根据贡献指南首先在这里查看。
答案 0 :(得分:0)
如果您在VS Code中打开project
,那么您希望将-s
设置为./calc
以获取您的测试(这实际上与VS Code无关,并且完全由unittest
包裹。)
答案 1 :(得分:0)
解决方法是在测试用例所在的每个文件夹中添加__init__.py
。
答案 2 :(得分:0)
我之所以将其发布为答案,是因为我对无法发布具有当前信誉级别的评论感到沮丧,但这无法通过在要测试的文件夹中添加__init__.py
来解决。我会继续尝试回答这个问题,因为它现在是一个答案。
在测试大型项目的文件夹中的模块时,只需使用file
菜单打开“文件夹”,以VSC视图打开该实际文件夹,然后在根目录中执行Python Test Configuration
目录(或最多一个目录),该目录生成该 init .py文件(这显然不是VSC无法找到嵌套测试的原因)。
这可以解决问题(尽管不允许您保持整个项目处于打开状态),并且还可以简化文件树以解决手头的特定任务。
我尝试了几种方法,包括各种命令,但这似乎是解决这种怪异行为的一种非常优雅的解决方案。
是的,我知道这个问题很古老,但显然仍与最新版本的VSC相关。