Python Pycharm和unittest不起作用
我对PYCharm 3.0.1有问题,无法运行基本单元测试 这是我的密码: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
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
绝对是一个卑鄙的家伙,从上面重复
- 运行-->编辑配置
- 选择测试的实例,然后按红色减号按钮
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
类。现在,另外 import unittest
import HtmlTestRunner
test_class = TestGoodnessOfFitTests()
unittest.main(module=test_class,
testRunner=HtmlTestRunner.HTMLTestRunner(output='t.html'))
运行“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'块,则执行myif。现在不是了。在调试器下运行时,这会打乱一些测试。这正是我的问题,当我意识到这一点时,我大笑起来。另外,请注意缩进,由于格式剪切和粘贴错误,我丢失了:)这修复了我遇到的同一问题。这是非常有用的信息。当我的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...