2012-10-04 2 views
0

다음과 같은 간단한 간단한 단위 테스트는 python2.7에서 잘 실행되지만 다음과 같은 오류가 발생했습니다 2.6에서 no method runTest()가 그 이유는 무엇입니까?이상한 문제 파이썬 unittest

감사합니다. 양이

[email protected] /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 
[email protected] /tmp $ vi a.py 
[email protected] /tmp $ cat a.py 
import unittest 

class AA(unittest.TestCase): 
    pass 

답변

0

당신은 당신의 클래스에 runTest 기능을 덮어 쓰기해야합니다.

또는 unittest가 테스트 기능으로 인식하는 test_something이라는 함수. 이는 각 테스트 전에 호출되는 함수 인 setUp 및 tearDown을 제공하여 테스트에 필요한 클래스 또는 재료를 만들 수 있기 때문에 적절한 수의 테스트를 실행하려는 경우에 유용합니다.

+0

감사하지만 처음에는 docs에서 간단한 예제가 제공됩니다. http://docs.python.org/release/2.6.6/library/unittest.html#basic-example runTest() 재정의를 사용하고 있지 않습니까? –

+0

그것은 test_something이라는 함수를 구현하기 때문에 unittest는 테스트 함수로 이해합니다. – tomahh

+0

나는 test_blah() 테스트, 클래스 AA (unittest.TestCase) 유닛 테스트 여전히 같은 수입 추가 : 데프 test_blah (자동) : assertEquals를 (1,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()에 전화를 보호 할 수 있습니다.