2013-11-28 2 views
3

Я использую argparse для обработки аргументов командной строки. Код работал нормально. Однако, как только я добавляю unittest.main() в основном, он не работает.argparse and unittest python

Я получаю:

I am here 
option -i not recognized 
Usage: testing.py [options] [test] [...] 

Options: 
    -h, --help  Show this message 
    -v, --verbose Verbose output 
    -q, --quiet  Minimal output 
    -f, --failfast Stop on first failure 
    -c, --catch  Catch control-C and display results 
    -b, --buffer  Buffer stdout and stderr during test runs 

Examples: 
    testing.py        - run default set of tests 
    testing.py MyTestSuite     - run suite 'MyTestSuite' 
    testing.py MyTestCase.testSomething  - run MyTestCase.testSomething 
    testing.py MyTestCase     - run all 'test*' test methods 
               in MyTestCase 

Я делаю так:

if __name__ == "__main__": 
    print "I am here" 
    unittest.main() 
+0

Нет опции '-i', поэтому ошибка будет правильной. Как вы называете сценарий? –

+0

Я вызываю скрипт как: python testing.py -isVerbose True – Exploring

+1

Тогда это одна из проблем: вы должны называть его как 'python testing.py -verbose', потому что у вас нет опции, объявленной как' isVerbose'. –

ответ

8

использование

runner = unittest.TextTestRunner() 
itersuite = unittest.TestLoader().loadTestsFromTestCase(MyTestClass) 
runner.run(itersuite) 

вместо:

unittest.main() 
+0

Блестящий, он работает сейчас. Не понимаю, почему unittest.main() терпел неудачу. – Exploring

+1

unittest.main() похоже на любые аргументы, переданные в основной код, поэтому он пытался разрешить ваши собственные аргументы, которые, конечно же, не могли. –

Смежные вопросы