【问题标题】:Python test explorer not recognizing test in VS Code when test files split into multiple files当测试文件拆分为多个文件时,Python 测试资源管理器无法识别 VS Code 中的测试
【发布时间】:2020-07-20 01:29:00
【问题描述】:

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

Sample Code

文件夹结构

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 是另一个文件并在另一个文件中进行测试,那么我该如何配置它。

base.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)

根据以下建议更新:

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

【问题讨论】:

  • 这些文件的位置是什么?阅读有关 python import 语句的信息。
  • @rioV8 我已经更新了上面的描述,请检查。我想我已经修复了 import 语句,但仍然无法在测试资源管理器中运行。
  • @rioV8 我还更新了问题描述中的示例代码。
  • 为什么你的仓库中有__pycache__?它是生成的东西。
  • 是的,我没有添加 gitignore 以便添加该文件。

标签: python visual-studio-code vscode-settings


【解决方案1】:

文件在同一个目录,所以试试

import base
k = base.BaseTestCase()

class MyTest(k):

【讨论】:

  • 我很累,但似乎没有工作。我已经用示例代码更新了上面的问题。请看看我哪里出错了。
  • 导入基准线给出警告未解决的导入基准。我也更新了屏幕截图
  • @kumar 就像我之前所说的未解决的导入错误是由于两个文件位于同一目录中以修复它们只需删除 test.base 并改用 import base
  • 抱歉上次没写清楚。我没有收到任何错误,但是当我使用“from test.base import BaseTestCase”时,VS 代码测试资源管理器没有在左窗格中显示测试。当我使用“导入基础”时,我得到未解决的导入错误。如果您有时间,请查看 github 示例代码
【解决方案2】:
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.py 重命名为base.py

将导入改为:

from test.base import BaseTestCase
import test.base

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

我关闭 VSC 并重新启动它。

现在Problem 面板不会在base.py 中显示错误并且测试工作正常。

看起来我有来自 repo 的原始文件,并且可以正常工作。

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

【讨论】:

  • 这似乎不起作用。我更新了屏幕截图。如果有帮助,你可以看看上面给出的 github 示例代码。
  • @kumar 我有一个工作版本,用 Python 3.6 试过
  • 当你说工作版本是基于我来自 github github.com/tkumark/pytestproject 的示例代码还是你自己的项目?我确定我错过了一些愚蠢的东西。如果您不介意分享您的代码?
  • @kumar 我从 repo 文件中重命名了一些文件,not 不再适用,因为测试有效
  • 当你说重命名了几个文件。你改变了什么,所以我可以做类似的改变,看看我做错了什么
猜你喜欢
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 2016-12-23
  • 2020-01-23
  • 1970-01-01
  • 2014-09-13
相关资源
最近更新 更多