0

次の非常に単純な単体テストは python2.7 では正常に実行されますが、2.6 では「no method 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
4

2 に答える 2

0

You have to overwrite runTest function in your class.

Or functions named test_something, wich unittest understands as test functions. This is helpful when you want to execute a conscequent number of tests, because you can provide setUp and tearDown, which are functions that are called before each test, to create classes or stuff that you need in your test.

于 2012-10-04T19:22:30.870 に答える
0

2.6 ではなく 2.7 で機能する理由は、ドキュメントに記載されています

それは言う

バージョン 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()コマンドラインからこのファイルを実行した場合にのみ呼び出されるように、呼び出しを保護することもできます。

于 2012-10-05T06:45:24.923 に答える