首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少导入符号的单元测试失败。

缺少导入符号的单元测试失败。
EN

Stack Overflow用户
提问于 2014-12-12 22:50:55
回答 2查看 702关注 0票数 1

我是Python、Python命令行和PyDev的新手。Fedora 20,Python2.7.5出现在这个发行版上。我无法编写单元测试。尝试导入unittest和unittest2 (如这里所示)。

代码语言:javascript
复制
from unittest2 import TestCase, main

def IsOdd( n ):
    return n % 2 == 1

class IsOddTests( TestCase ):
    def testOne( self ):
        self.failUnless( IsOdd( 1 ) )
    def testTwo( self ):
        self.failIf( IsOdd( 2 ) )

def main():
    main()

if __name__ == '__main__':
    main()

每个进口都有自己的问题。无论是在Eclipse中的PyDev控制台还是在命令行shell中都会发生这种情况。我已经查看了/usr/lib/python2.7/site-packages/*下面的内容,并找到了缺少的符号(TestCase和unit),但这对目前的情况没有帮助。

代码语言:javascript
复制
/usr/bin/python 2.7.5 (default, Nov  3 2014, 14:26:24) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-7)]
PyDev console: starting.
>>> from unittest2 import TestCase, main
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/unittest2/__init__.py", line 40, in <module>
    from unittest2.collector import collector
  File "/usr/lib/python2.7/site-packages/unittest2/collector.py", line 3, in <module>
    from unittest2.loader import defaultTestLoader
  File "/usr/lib/python2.7/site-packages/unittest2/loader.py", line 8, in <module>
    import unittest
  File "/home/russ/dev/python-workspace/max/src/unittest.py", line 11, in <module>
    from unittest2 import TestCase, main
  File "/usr/lib/python2.7/site-packages/unittest2/main.py", line 7, in <module>
    from unittest2 import loader, runner
  File "/usr/lib/python2.7/site-packages/unittest2/runner.py", line 7, in <module>
    from unittest2 import result
  File "/usr/lib/python2.7/site-packages/unittest2/result.py", line 26, in <module>
    class TestResult(unittest.TestResult):
AttributeError: 'module' object has no attribute 'TestResult'
>>> from unittest import TestCase, main
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/russ/dev/python-workspace/max/src/unittest.py", line 11, in <module>
    from unittest2 import TestCase, main
  File "/usr/lib/python2.7/site-packages/unittest2/__init__.py", line 40, in <module>
    from unittest2.collector import collector
  File "/usr/lib/python2.7/site-packages/unittest2/collector.py", line 3, in <module>
    from unittest2.loader import defaultTestLoader
  File "/usr/lib/python2.7/site-packages/unittest2/loader.py", line 12, in <module>
    from unittest2 import case, suite
  File "/usr/lib/python2.7/site-packages/unittest2/case.py", line 10, in <module>
    from unittest2 import result
  File "/usr/lib/python2.7/site-packages/unittest2/result.py", line 9, in <module>
    from unittest2 import util
ImportError: cannot import name util
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-12 23:08:50

我从未使用过unittest2。对于您的情况来说,使用普通的单元测试似乎要好一些,因为它是python内置的,并且经过了很好的审查。我能让这件事对我有用

代码语言:javascript
复制
from unittest import TestCase, main as unittest_main

def IsOdd( n ):
    return n % 2 == 1

class IsOddTests( TestCase ):
    def testOne( self ):
        self.failUnless( IsOdd( 1 ) )
    def testTwo( self ):
        self.failIf( IsOdd( 2 ) )

def main():
    unittest_main()

if __name__ == '__main__':
    main()

然后运行它

代码语言:javascript
复制
0 ✓ greg@MinasArnor ~/workspace $ python test.py 
..
----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK
票数 1
EN

Stack Overflow用户

发布于 2014-12-12 23:20:48

我注意到你背后的痕迹:

代码语言:javascript
复制
File "/home/russ/dev/python-workspace/max/src/unittest.py", line 11, in <module>

这是:

代码语言:javascript
复制
class TestResult(unittest.TestResult):
AttributeError: 'module' object has no attribute 'TestResult'

重命名你的档案。您已经将脚本命名为unittest.py,因此Python正在为类(如TestResult)查找您的单元测试脚本,而不是像它所期望的那样使用内置的单元测试模块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27453347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档