首页 > 解决方案 > 当测试文件拆分为多个文件时,Python 测试资源管理器无法识别 VS Code 中的测试

问题描述

当我在与我的测试 VS 代码相同的文件中有 BaseTestCase 时,测试资源管理器能够识别我的测试。

示例代码

在此处输入图像描述

文件夹结构

MyProject/
   app/
   test/
       myworking_test.py
       base.py
       mynotworking_test.py

myworking_test.py这个可以通过 VS 代码资源管理器识别

import unittest

class BaseTestCase(unittest.TestCase):
    def setUp(self):
        self.num = 1
    def tearDown(self):
        self.num = None

class MyTest(BaseTestCase):
    def runTest(self):
        self.assertEqual(self.num, 1)

如果我将其拆分为 2 个文件,其中 BaseTestCase 是另一个文件并在另一个文件中进行测试,那么我该如何配置它。

基础.py

import unittest

class BaseTestCase(unittest.TestCase):
    def setUp(self):
        self.num = 1
    def tearDown(self):
        self.num = None

mynotworking_test.py

from test.base import BaseTestCase

class MyTest(BaseTestCase):
    def runTest(self):
        self.assertEqual(self.num, 1)

根据以下建议更新:

如您所见,它提供了未解决的导入基础。仅使用“导入基础”时也是如此 获取未解析的导入库时出错

标签: pythonvisual-studio-codevscode-settings

解决方案


from base import BaseTestCase

class MyTest(BaseTestCase):
    def runTest(self):
        self.assertEqual(self.num, 1)

或者

import base

class MyTest(base.BaseTestCase):
    def runTest(self):
        self.assertEqual(self.num, 1)

编辑 1

如果我运行示例代码,问题似乎是文件名:base.py

我收到很多编译器警告。

除base外的任何其他名称都可以。

使用以下文件,我可以正常工作

base_test.py

import unittest

class BaseTestCase(unittest.TestCase):
    def setUp(self):
        self.num = 1
    def tearDown(self):
        self.num = None

mynowworking_test.py

from test.base_test import BaseTestCase

class MyTest(BaseTestCase):
    def runTest(self):
        self.assertEqual(self.num, 1)

或者

import test.base_test

class MyTest(test.base_test.BaseTestCase):
    def runTest(self):
        self.assertEqual(self.num, 1)

编辑 2

我重命名base_test.pybase.py.

将导入更改为:

from test.base import BaseTestCase
import test.base

我仍然在Problem面板中有错误,但测试有效。

我关闭 VSC 并重新启动它。

现在Problem面板没有显示错误base.py并且测试工作。

看起来我有来自回购的原始文件,它可以工作。

但是我第一次打开项目时它没有运行。


推荐阅读