Модульное тестирование с кодом argparse
немного сложнее, поскольку обычно ожидает ввода из командной строки. Но само тестирование использует командную строку (возможно, с собственным анализатором argparse).
Я полагаю, get_the_args
устанавливает парсер и возвращает parser.parse_known_args()
.
В целях тестирования удобно предоставить себе возможность предоставления явного списка argv
.
например:.
def time_frame(argv=None):
"""
checks for optional user input for start and end date of data pull
creates start and end date for query
:return: start and end date
"""
# get the dates
args, leftovers = get_the_args(argv)
...
, где get_the_args
использует parse_known_args(argv)
.
Если argv
- None, то он анализирует обычную командную строку. Но вы можете предоставить любой список строк, который генерирует нужные args
и extras
. По сути, вы можете имитировать командную строку.
Другим вариантом является определение args
объекта пространства имен, например. args = argparse.Namespace(start_dt=None, end_dt='foobar')
. Тогда вы можете использовать args.start_dt
, как и раньше.
Еще одна вещь, облегчающая тестирование, - это запуск parser
только тогда, когда код запускается как скрипт, а не когда он импортируется. То есть поместите его в `if name == ' main ': block.