Python Pycharm和unittest不起作用

Python Pycharm和unittest不起作用,python,pycharm,python-unittest,Python,Pycharm,Python Unittest,我对PYCharm 3.0.1有问题,无法运行基本单元测试 这是我的密码: import unittest from MysqlServer import MysqlServer class MysqlServerTest(unittest.TestCase): def setUp(self): self.mysqlServer = MysqlServer("ip", "username", "password", "db", port) def te

我对PYCharm 3.0.1有问题,无法运行基本单元测试

这是我的密码:

import unittest from MysqlServer import MysqlServer


class MysqlServerTest(unittest.TestCase):


    def setUp(self):
        self.mysqlServer = MysqlServer("ip", "username", "password", "db", port)


    def test_canConnect(self):
        self.mysqlServer.connect()
        self.fail()


if __name__ == '__main__':
    unittest.main()
这是你给我的所有东西

无法将测试报告程序附加到测试框架,或者测试框架意外退出

也就是说

AttributeError: class TestLoader has no attribute '__init__'
和事件日志:

2:14:28 PM Empty test suite
问题是当我手动运行python文件时(使用pycharm作为脚本)

这很正常,我故意让考试不及格。我对正在发生的事情有点不知所措 详情如下: 设置->Python集成工具->包需求文件:/src/test 默认测试运行程序:Unittests 已安装pyunit 1.4.1

谢谢你的帮助

编辑:unitests.py的基本用法也会发生同样的情况

import unittest


class IntegerArithmenticTestCase(unittest.TestCase):
def testAdd(self):  ## test method names begin 'test*'
    self.assertEquals((1 + 2), 3)
    self.assertEquals(0 + 1, 1)

def testMultiply(self):
    self.assertEquals((0 * 10), 0)
    self.assertEquals((5 * 8), 40)


if __name__ == '__main__':
    unittest.main()

这可能是因为您没有在设置对话框中正确设置测试框架


虽然原始海报并非如此,但我想指出,另一个导致这种情况的原因是测试函数不是以“test”开头的

class TestSet(unittest.TestCase):

    def test_will_work(self):
        pass

    def will_not_work(self):
        pass

绝对是一个卑鄙的家伙,从上面重复

  • 运行-->编辑配置
  • 选择测试的实例,然后按红色减号按钮
使用PyCharm和大多数默认测试运行程序(py.test、nosetest、unittest等)生成html报告的4个步骤:
  • 确保为您的测试方法提供前缀“test”(如其他人之前所述),例如
    def test\u run1()
  • 测试报告包文档中广泛使用的示例代码是

    import unittest
    import HtmlTestRunner
    
    class TestGoodnessOfFitTests(unittest.TestCase):
    
     def test_run1(self):
      ...
    
    if __name__ == '__main__':
     unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='t.html'))
    
    此代码通常位于包含所有unittests和“main”catcher代码的测试类文件中。此代码持续为我生成警告
    空测试套件
    。因此,删除所有if\uuuu名称\uuuuu。。。代码。该文件现在只包含
    testGoodnessOffitts
    类。现在,另外

  • 在测试类文件的同一目录中创建一个新的main.py,并使用以下代码:

     import unittest
     import HtmlTestRunner
     test_class = TestGoodnessOfFitTests()
     unittest.main(module=test_class, 
     testRunner=HtmlTestRunner.HTMLTestRunner(output='t.html'))
    
  • 删除旧的运行配置,右键单击main.py并按
    运行“main”
    。验证
    首选项->Python集成工具->默认测试运行程序下的正确设置(在我的例子中,py.test和nose工作)

  • 输出

    Running tests... 
    ----------------------------------------------------------------------
     test_gaussian_dummy_kolmogorov_cdf_1 (tests.evaluation_tests.TestGoodnessOfFitTests) ... OK (1.033877)s
    
    ----------------------------------------------------------------------
    Ran 1 test in 0:00:01
    
    OK
    
    
    
    Generating HTML reports... 
    

    我也有同样的问题。事实证明,识别单个测试的事实与文件名相关。在我的例子中,
    test\u calculate\u kpi.py
    ,PyCharm在重命名为
    test\u calculate\u kpi.py
    时没有将其识别为测试,但立即被识别出来。

    即使我有同样的问题,我也觉得工作区没有正确刷新。甚至我也做了文件->同步(Ctrl+Aly+y)。但这不是解决办法。我刚刚重命名了我的测试python文件名,并且再次尝试执行代码,它开始运行良好

    我也有同样的问题。该文件名为
    test\u exercise\u detectors.py
    (注意复数形式的“detectors”),它位于名为
    test\u exercise\u detectors
    的打包文件中。将文件名更改为
    test\u exercise\u detector.py
    (单数“detector”)修复了该问题。

    在JVM更改后,(对Sun开放)重新启动几次,并使用py.test代替unittests(仍然不起作用)。我可以在pycharm中使用py.test框架运行测试。看起来我有一些不推荐的软件包,我必须通过setuptools更新。我看到了我认为pycharm 3.x上的基本问题。在pycharm的早期版本上,如果执行了uuu name uuuu=='uuuu main uuuu'
    块,则执行my
    if。现在不是了。在调试器下运行时,这会打乱一些测试。这正是我的问题,当我意识到这一点时,我大笑起来。另外,请注意缩进,由于格式剪切和粘贴错误,我丢失了:)这修复了我遇到的同一问题。这是非常有用的信息。当我的
    setUpClass
    抛出异常时,我在Pycharm中遇到了这个问题。下面添加的新答案可能对您的情况有所帮助。你能验证一下吗?截图可以帮助我改名。在我的例子中,项目中有多个文件具有相同的名称,并将其重命名为唯一文件。是的,包含测试的文件应以“test_”开头
    Running tests... 
    ----------------------------------------------------------------------
     test_gaussian_dummy_kolmogorov_cdf_1 (tests.evaluation_tests.TestGoodnessOfFitTests) ... OK (1.033877)s
    
    ----------------------------------------------------------------------
    Ran 1 test in 0:00:01
    
    OK
    
    
    
    Generating HTML reports...