Я пытаюсь запустить базовый модульный тест на Python 2.6, который принимает аргументы с помощью argparse.
Я ограничен в своей среде и не могу устанавливать какие-либо дополнительные библиотеки или использовать какие-либо модули для тестирования, кроме unittest.
Однако я считаю, что ответ лежит здесь:
Как вы пишете тесты для часть argparse модуля python?
Однако у меня возникли проблемы с рефакторингом предоставленного основного ответа с моим кодом.
Без рефакторинга моего примера кода, который я предоставил, может ли кто-нибудь показать мне свет и показать мне, как написать модульный тест для приведенного ниже кода, который принимает -H и -S на лету?
Заранее спасибо.
#!python
import argparse
import sys
try:
HOSTNAME = sys.argv[2]
SOMESTRING = sys.argv[3]
except IndexError:
print "Please Enter the Hostname and Somestring"
def argparse_msg():
return "testscript_example -H somehost -S somestring"
def check_arg(args=None):
parser = argparse.ArgumentParser(description="A Test Example", usage=argparse_msg())
parser.add_argument("-H", "--host",
help="HostName",
required=True)
parser.add_argument("-S", "--somestring",
help="HostName",
required=True)
results = parser.parse_args(args)
return (results.host, results.somestring)
def message_test():
print HOSTNAME + " " + SOMESTRING
def main():
message_test()
if __name__ == "__main__":
HOSTNAME, SOMESTRING = check_arg(sys.argv[1:])
main()
unittest
(или другого пакета тестирования) вы не можете указать значения командной строки для своего собственного скрипта. Командная строка предназначена для самогоunittest
(у которого есть собственный парсер). Другие ссылки: stackoverflow.com/questions/51710083/, stackoverflow.com/questions/42331049/ - person hpaulj   schedule 02.04.2019