我是Python、Python命令行和PyDev的新手。Fedora 20,Python2.7.5出现在这个发行版上。我无法编写单元测试。尝试导入unittest和unittest2 (如这里所示)。
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),但这对目前的情况没有帮助。
/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发布于 2014-12-12 23:08:50
我从未使用过unittest2。对于您的情况来说,使用普通的单元测试似乎要好一些,因为它是python内置的,并且经过了很好的审查。我能让这件事对我有用
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()然后运行它
0 ✓ greg@MinasArnor ~/workspace $ python test.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OK发布于 2014-12-12 23:20:48
我注意到你背后的痕迹:
File "/home/russ/dev/python-workspace/max/src/unittest.py", line 11, in <module>这是:
class TestResult(unittest.TestResult):
AttributeError: 'module' object has no attribute 'TestResult'重命名你的档案。您已经将脚本命名为unittest.py,因此Python正在为类(如TestResult)查找您的单元测试脚本,而不是像它所期望的那样使用内置的单元测试模块。
https://stackoverflow.com/questions/27453347
复制相似问题