【发布时间】:2011-02-27 21:36:40
【问题描述】:
使用Python 2.6,我在一个目录下的python文件中做了一个非常简单的测试:
#mytest.py
import unittest
class BasicTests(unittest.TestCase):
def test_ok(self):
self.assertTrue(True)
suite = unittest.TestLoader().loadTestsFromTestCase(BasicTests)
我切换到目录并运行python -m unittest mytest.suite,我收到以下错误:
Traceback (most recent call last):
File "/usr/lib/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/usr/lib/python2.6/unittest.py", line 875, in <module>
main(module=None)
File "/usr/lib/python2.6/unittest.py", line 816, in __init__
self.parseArgs(argv)
File "/usr/lib/python2.6/unittest.py", line 843, in parseArgs
self.createTests()
File "/usr/lib/python2.6/unittest.py", line 849, in createTests
self.module)
File "/usr/lib/python2.6/unittest.py", line 613, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python2.6/unittest.py", line 598, in loadTestsFromName
test = obj()
File "/usr/lib/python2.6/unittest.py", line 464, in __call__
return self.run(*args, **kwds)
TypeError: run() takes exactly 2 arguments (1 given)
我尝试了几种变体(例如unittest.makeSuite 和unittest.LoadTestFromNames),但它们都给了我相同的基本错误。我错过了什么?我保留reading the documentation,我似乎遵循规范。
【问题讨论】:
-
只是猜测:在命令行中是否需要另一个参数?
-
您可以通过使用
unittest2、nose、py.text提供的测试运行程序来避免手动创建测试套件。 -
令人沮丧的是你需要下载一个包来做一些简单的事情,比如为 python 获得一个像样的测试运行器,即使是 2.6 的新版本。 :(
标签: python unit-testing