2016-07-27 2 views
1

python2.7과 함께 Windows를 사용하고 있습니다. 내 프로그램은 아주 간단하다. 명령 줄을 통해 입력을 받고 '5'인지 확인하십시오.python에서 명령 줄 인수를 가져 오는 중 오류 발생

코드 :

import unittest 
import sys 

a=sys.argv[1] 

print a 

class TestCase(unittest.TestCase): 
    """My tests""" 

    def test_is_number_is_five(self): 
     self.assertEqual('5',a) 

if __name__ == '__main__': 
    unittest.main() 

그리고 사용하여 실행 :

Traceback (most recent call last): 
    File "C:\Python27\lib\unittest\main.py", line 94, in __init__ 
    self.parseArgs(argv) 
    File "C:\Python27\lib\unittest\main.py", line 149, in parseArgs 
    self.createTests() 
    File "C:\Python27\lib\unittest\main.py", line 158, in createTests 
    self.module) 
    File "C:\Python27\lib\unittest\loader.py", line 130, in loadTestsFromNames 
    suites = [self.loadTestsFromName(name, module) for name in names] 
    File "C:\Python27\lib\unittest\loader.py", line 100, in loadTestsFromName 
    parent, obj = obj, getattr(obj, part) 
AttributeError: 'module' object has no attribute '5' 

답변

3

unittest.main() 명령에서 실행하는 테스트의 목록을 얻을 것이다 :이 오류를 얻고있다

>>python test.py 5 

을 선. 따라서 모듈에 5이라는 테스트를 찾으려고 시도하지만 테스트가 없으므로 실패합니다.

unittest.main()에 자신의 argv 값을 전달할 수있는 문제를 해결하려면 다음이 스크립트 파일 이름을 첫 번째 인수를 전달

if __name__ == '__main__': 
    unittest.main(argv=sys.argv[:1]) 

. 그러나 명령 행에서 테스트 이름을 전달하려면 unittest.main()의 일부 기능을 중단하십시오.

+0

와우 ... 작동 ... 감사합니다. :) –

관련 문제