VSCode Python 测试发现由于导入而未正确加载

VSCode Python test discovery not loading properly because of imports

我有一个目录结构:

Business Logic
    excel_format_error_checks.py
tests
    test_excel_format_error_checks.py

当我像下面这样设置 excel_format_error_checks 的导入时,VSCode 测试发现会出错 ModuleNotFoundError: No module named 'Business_Logic'

test_excel_format_error_checks.py

import sys
sys.path.append('..')
from Business_Logic import excel_format_error_checks

class TestExcelFormatErrorChecks(TestCase):

    @patch('Business_Logic.excel_format_error_checks.openpyxl')
    def test_tgl_not_missing_from_titles(self,mock_openpyxl):
      ...

如果我将导入更改为 from ..Business_Logic import excel_format_error_checks,测试发现有效。

然后当我尝试 运行 来自 VSCode 测试发现的测试时,由于 @patch 路径 ModuleNotFoundError: No module named 'Business_Logic'.

,我得到一个错误

当我尝试 运行 从终端进行测试时,出现错误

ImportError: Failed to import test module: test_excel_format_error_checks Traceback (most recent call last): File "C:\Users\brady\AppData\Local\Programs\Python\Python310\lib\unittest\loader.py", line 154, in loadTestsFromName module = __import__(module_name) File "C:\Users\brady\Desktop\excel_formatting\excel_format_website\api\tests\test_excel_format_error_checks.py", line 6, in <module> from ..Business_Logic import excel_format_error_checks ImportError: attempted relative import with no known parent package

问题,1.why 测试发现是否仅在我将 .. 添加到导入时才起作用 2. 如何解决问题/修复补丁路径

谢谢

在python语言中,import通常只在文件的当前目录下查找,而你的文件目录显然不在同一个文件夹中。

我们可以使用下面的代码来提供相对路径。当然,更常用的是绝对路径。

import os
import sys
os.path.join(os.path.dirname(__file__), '../')
sys.path.append(os.path.join(os.path.dirname(__file__), '../'))
from BusinessLogic import excel_format_error_checks