Я бы хотел передать свои собственные аргументы в файлы, которые настроены для unittest.Поэтому вызов его из командной строки должен работать следующим образом:
python Misc / Test.py --c keith.ini SomeTests.test_one
В настоящее время я сталкиваюсь с двумя проблемами.
1) Анализ аргументов не допускает неизвестных аргументов
использование: Test.py [-h] [--c CONFILE] Test.py: ошибка: нераспознанные аргументы: SomeTests.test_one
2) Модульный тест не допускает неизвестных аргументов.Поэтому --c fileName не принимается unittest и возвращает:
AttributeError: у объекта 'module' нет атрибута 'keith'
Поэтому идея состоит в том, чтобы собрать мои аргументы и удалить их перед вызовомunittest runner.
import unittest
import argparse
myArgs = None
def getArgs( allArgs ):
parser = argparse.ArgumentParser( )
parser.add_argument('--c', dest='conFile', type=str, default=None, help='Config file')
args = parser.parse_args()
if ( args.conFile == None ):
parser.print_help()
return args
class SomeTests(unittest.TestCase):
def test_one(self):
theTest( 'keith' )
def test_two(self):
otherTest( 'keith' )
if __name__ == '__main__':
myArgs = getArgs( sys.argv )
print 'Config File: ' + myArgs.conFile
unittest.main( argv=sys.argv, testRunner = unittest.TextTestRunner(verbosity=2))
Интересно, я только что нашел parse_known_args (), поэтому я изменил строку разбора на:
args = parser.parse_known_args(['--c']).
Я подумал, что это решит мою проблему и даст мне кое-что для передачимодульный тест.К сожалению, я получаю:
Test.py: error: argument --c: expected one argument.
Разве это не должно работать?