Pycharm - 没有找到测试?

时间:2016-03-12 23:59:07

标签: python unit-testing pycharm nose

我一直在

  

未发现任何测试

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帖子,但我仍然完全糊涂了。我的运行配置目前看起来像这样:

enter image description here

我想我只是明白我可能做错了什么?任何帮助将不胜感激,谢谢!

8 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:18)

我知道问题已经过了一年多了,但我遇到了同样的问题,而这篇帖子是搜索的第一个结果。

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

  1. 测试功能应以" test" (没有必要使用下划线)
  2. 包含测试的文件也应以" test"开头。 "试验" (资本T在我的案例中不起作用
  3. 我正在使用Intellij IDEA 2016.3.5和Python插件

    如果您想使用命令行运行测试

    python -m unittest
    

    然后你应该将__init__.py添加到测试目录。 Python仍然希望您的测试函数名称以" test"开头,并且您测试文件名以#34; test"开头,但是在文件的情况下,它并不关心第一个" t"是资本与否。 TestCase和test_case同样没问题。

答案 2 :(得分:4)

您可能想要检查的另一个问题是,您是否在控制台输出中看到" ##测试取消选择' -k XXXX' "。这意味着您已将关键字添加到运行/调试配置中,而Pycharm将仅运行其名称包含关键字的测试。

答案 3 :(得分:4)

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

答案 4 :(得分:4)

另一个困扰我的事情。

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

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

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

因此,还有一件事需要检查,确保项目中没有其他文件具有相同的名称。

答案 5 :(得分:3)

添加另一个答案,希望它有助于某人前进。我一直在解决这个问题,只是想出答案(我想)。我最初删除了我的应用程序文件夹中的标准Django文件tests.py。我还创建了一个名为tests的项目子目录,其中包含单独的测试脚本。在这种情况下,Pycharm未能找到测试。我只是通过在我的应用程序文件夹中创建一个名为tests.py的空文件来纠正这个问题

所以:

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

    enter image description here

答案 6 :(得分:2)

也可能导致此问题的一件事是,如果您在设置中未选择正确的测试框架:

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

我所有的测试都在pytest中,但已将其设置为单元测试

答案 7 :(得分:0)

在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

哪个工作了!

相关问题