【问题标题】:PyCharm - no tests were found?PyCharm - 没有找到测试?
【发布时间】:2022-05-06 06:44:33
【问题描述】:

我在 PyCharm 中遇到了一个错误,我不知道为什么会这样:

没有找到测试

这就是我的point_test.py

import unittest
import sys
import os

sys.path.insert(0, os.path.abspath('..'))

from ..point import Point


class TestPoint(unittest.TestCase):
    def setUp(self):
        pass

    def xyCheck(self,x,y):
        point = Point(x,y)
        self.assertEqual(x,point.x)
        self.assertEqual(y,point.y)

还有这个point.py,我正在尝试测试:

import unittest

from .utils import check_coincident, shift_point

class Point(object):
    def __init__(self,x,y,mark={}):
        self.x = x
        self.y = y
        self.mark = mark

    def patched_coincident(self,point2):
        point1 = (self.x,self.y)
        return check_coincident(point1,point2)

    def patched_shift(self,x_shift,y_shift):
        point = (self.x,self.y)
        self.x,self,y = shift_point(point,x_shift,y_shift)

我的运行配置有问题吗?我查看了this SO 帖子,但我仍然非常困惑。我的运行配置目前如下所示:

【问题讨论】:

标签: python unit-testing pycharm


【解决方案1】:

为了识别测试函数,它们必须命名为test_。在您的情况下,将 xyCheck 重命名为 test_xyCheck :)

【讨论】:

  • 呼应Ilya's answer,您还需要将测试文件命名为test_...,否则您无法从它们的目录运行测试
  • 请记住,如果您的测试在一个类中,那么类名也应该以单词Text 开头。本题使用类名TestPoint,没错。如果您的班级名称是 PointTest,您可能会遇到同样的错误。
【解决方案2】:

我知道这个问题被问到已经一年多了,但我也遇到了同样的问题,并且该帖子是搜索的第一个结果。

据我了解,如果您希望在运行目录中的所有测试时启动 PyCharm(或 Intellij Idea Python 插件),您的测试需要满足以下条件。

  1. 测试函数应该以“test”开头(下划线不是必须的)
  2. 包含测试的文件也应该以“test”开头。 “测试”(大写 T 在我的情况下不起作用

我正在使用带有 Python 插件的 Intellij IDEA 2016.3.5

如果你想用命令行运行你的测试

python -m unittest

然后你应该将__init__.py 添加到测试目录。 Python 仍然希望您的测试函数名称以“test”开头,并且您测试文件名以“test”开头,但是对于文件,它并不关心第一个“t”是否大写。 TestCase 和 test_case 同样没问题。

【讨论】:

  • 对我来说,包含测试的文件必须以test_开头
【解决方案3】:

如果您没有在设置中选择正确的测试框架,也可能导致此问题:

设置 > Python 集成工具 > 测试 > 默认测试运行器

我所有的测试都在 pytest 中,但它被设置为单元测试

【讨论】:

    【解决方案4】:

    又一个让我大吃一惊的问题。

    我的测试包中有一个名为 test_queue.py 的测试文件,它遵循了上述所有建议,但是当我在 PyCharm 中选择“运行 UnitTests”时,控制台报告未找到任何测试。

    就我而言,问题是我在项目的根目录中有一个非单元测试文件,也称为 test_queue.py,该文件在项目早期用于其他目的而被遗忘了。

    即使我专门选择了我的测试文件夹中的测试文件,并且路径设置为绝对指向文件的单元测试版本,但似乎正在使用项目根目录中的文件。

    所以,还要检查一件事,确保您的项目中没有其他同名文件。

    【讨论】:

      【解决方案5】:

      不要在文件名中使用破折号(“-”)。这些文件在我的机器上被忽略了。将它们从 project-tests.py 重命名为 project_tests.py 解决了这个问题。

      【讨论】:

        【解决方案6】:

        您可能要检查的另一个问题是您是否在控制台输出中看到“## tests deselected by '-k XXXX'”。这意味着你已经在运行/调试配置中添加了一个关键字,Pycharm 将只运行名称中包含该关键字的测试。

        【讨论】:

          【解决方案7】:

          添加另一个答案,希望它对以后的人有所帮助。我一直在与这个问题作斗争,只是想出了答案(我认为)。我最初从我的应用程序文件夹中删除了标准 Django 文件 tests.py。我还为我的项目创建了一个名为 tests 的子目录,其中包含单独的测试脚本。在这种情况下,Pycharm 无法找到测试。我只是通过在我的应用程序文件夹中创建一个名为 tests.py 的空文件来纠正这个问题。

          所以:

          1. 确保您的应用程序目录中有一个名为 tests.py 的文件(它可以是一个空文件)
          2. 在您的项目中,一个名为 tests 的文件夹似乎可以包含单独的测试脚本,而 Pycharm 似乎可以找到并运行这些脚本。

          这是对我有用的目录结构图片:

          【讨论】:

            【解决方案8】:

            在 PyCharm 2018.1 的 Django 1.8 项目中运行单个测试时,我遇到了这个异常。我可以同时运行所有测试,但一个文件中的单个测试崩溃了。

            异常发生在 unittest 的 loader.py 中

            尝试导入 test_admin_views.py 时遇到 ImportError,尽管该异常隐藏了该错误的详细信息。

            为了查看 ImportError 的详细信息,我打开了 Python 控制台并运行:

            import my_app.users.tests.test_admin_views
            

            这给了我:

            Traceback (most recent call last):
              [...]
              File "my_app/my_app/users/tests/model_factories.py", line 42, in <module>
                from my_app.applications.tests.model_factories import ApplicationFactory
            ImportError: cannot import name ApplicationFactory
            

            我注意到该文件中的一些其他工厂是在没有使用完整路径的情况下导入的,因此我尝试将 ApplicationFactory 添加到相对路径导入列表中:

            from .model_factories import UserFactory, UserGroupFactory, ApplicationFactory
            

            哪个有效!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-01-12
              • 2014-04-23
              • 2012-11-18
              • 2018-08-22
              相关资源
              最近更新 更多