簡體   English   中英

VS Code Python unittest AssertionError: Path must be within the project or Importerror

[英]VS Code Python unittest AssertionError: Path must be within the project or Importerror

因此,我再次在 VS Code 中遇到了 python unittest 的問題。 我的目錄結構如下:

workdir
 __init__.py
 - package
   __init__.py

   - submoduleA
    __init__.py

   - submoduleB
     __init__.py

   ...

   - tests
     __init__.py
     test_A.py
     test_B.py
     ...

所以基本上,我的 package 在我的工作目錄中,有一堆子模塊和一個測試文件夾。 一切都有一個__init__.py文件,當我將它導入腳本並運行它時,它運行良好。

直到今天早上,我的 settings.json 如下,一切正常:

"python.testing.unittestArgs": [
        "-v",
        "-s",
        ".",
        "-p",
        "test_*.py"
    ],

現在它說:

[ERROR 2022-7-8 11:38:54.740]: Error discovering unittest tests:
 Traceback (most recent call last):
  File "/home/fratajcz/.vscode-server/extensions/ms-python.python-2022.12.0/pythonFiles/testing_tools/unittest_discovery.py", line 42, in <module>
    suite = loader.discover(start_dir, pattern=pattern, top_level_dir=top_level_dir)
  File "/home/icb/fratajcz/anaconda3/envs/compat/lib/python3.7/unittest/loader.py", line 349, in discover
    tests = list(self._find_tests(start_dir, pattern))
  File "/home/fratajcz/anaconda3/envs/compat/lib/python3.7/unittest/loader.py", line 387, in _find_tests
    name = self._get_name_from_path(start_dir)
  File "/home/fratajcz/anaconda3/envs/compat/lib/python3.7/unittest/loader.py", line 371, in _get_name_from_path
    assert not _relpath.startswith('..'), "Path must be within the project"
AssertionError: Path must be within the project
Traceback (most recent call last):
  File "/home/fratajcz/.vscode-server/extensions/ms-python.python-2022.12.0/pythonFiles/get_output_via_markers.py", line 26, in <module>

所以現在,甚至. 不在項目中了嗎? VS Code 在這里談論的這個不祥的項目是什么?

如果我將 settings.json 更明確地設置為:

"python.testing.unittestArgs": [
        "-v",
        "-s",
        "workdir/package/tests",
        "-t",
        "workdir/package/",
        "-p",
        "test_*.py"
    ],

它告訴我:

[ERROR 2022-7-8 11:49:33.496]: Error discovering unittest tests:
 Traceback (most recent call last):
  File "/home/fratajcz/.vscode-server/extensions/ms-python.python-2022.12.0/pythonFiles/testing_tools/unittest_discovery.py", line 42, in <module>
    suite = loader.discover(start_dir, pattern=pattern, top_level_dir=top_level_dir)
  File "/home/fratajcz/anaconda3/envs/compat/lib/python3.7/unittest/loader.py", line 346, in discover
    raise ImportError('Start directory is not importable: %r' % start_dir)
ImportError: Start directory is not importable: 'workdir/package/tests'

如果我只是從終端使用相同的參數運行 unittest 測試發現,它運行順利。

我只是不知道了,這是另一個來自 VS Code 的諷刺笑話嗎?

謝謝你的幫助!

如果有人在 VS Code 中對單元測試有同樣令人沮喪的經歷,只需切換到 pytest 即可解決問題。 我現在可以使用的設置(基本相同,但在 pytest 語法中):

"python.testing.pytestArgs": [
        "package/tests/",
        "-v",
        "-k",
        "test_",
        "--collect-only"
    ],

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM