以下超级简单单元测试在python2.7下运行正常,但出现以下错误 “2.6中没有方法runTest()”,为什么会这样?
谢谢! 阳
myuser@myhost /tmp $ python26 -m unittest a.AA
Traceback (most recent call last):
File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/usr/lib64/python2.6/unittest.py", line 874, in <module>
main(module=None)
File "/usr/lib64/python2.6/unittest.py", line 815, in __init__
self.parseArgs(argv)
File "/usr/lib64/python2.6/unittest.py", line 842, in parseArgs
self.createTests()
File "/usr/lib64/python2.6/unittest.py", line 848, in createTests
self.module)
File "/usr/lib64/python2.6/unittest.py", line 612, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib64/python2.6/unittest.py", line 597, in loadTestsFromName
test = obj()
File "/usr/lib64/python2.6/unittest.py", line 215, in __init__
(self.__class__, methodName)
ValueError: no such test method in <class 'a.AA'>: runTest
myuser@myhost /tmp $ vi a.py
myuser@myhost /tmp $ cat a.py
import unittest
class AA(unittest.TestCase):
pass
答案 0 :(得分:0)
您必须在班级中覆盖runTest功能。
或者名为test_something的函数,unittest将其理解为测试函数。当你想要执行相当数量的测试时,这很有用,因为你可以提供setUp和tearDown,它们是在每次测试之前调用的函数,用于创建测试中所需的类或东西。
答案 1 :(得分:0)
它在2.7而非2.6中工作的原因是in the documentation。
它说
在2.7版本中更改:在早期版本中,只能运行单独的测试方法,而不能运行模块或类。
您正在尝试在整个班级AA
中运行所有测试。你不能在2.6中这样做。您可以在代码底部拨打unittest.main()
,然后通过python a.py
从命令行运行脚本。
$ cat a.py
import unittest
class AA(unittest.TestCase):
def test_something(self):
self.assertEqual(1, 1)
unittest.main()
$ python -V
Python 2.6.1
$ python a.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
您可能还希望保护对unittest.main()
的调用,以确保仅在从命令行运行此文件时才调用它。