Мы создали cli-приложение на Python. Некоторая часть нуждается в курсах, поэтому мы используем
npyscreen. Мы успешно протестировали большую часть приложения, используя pytest
(с помощью макетов и прочего). Но мы застряли в «как проверить
часть кода ncurses '
Возьмите эту часть нашего кода ncurses, которая предлагает пользователю ответить:
"""
Generate text user interface:
example :
fields = [
{"type": "TitleText", "name": "Name", "key": "name"},
{"type": "TitlePassword", "name": "Password", "key": "password"},
{"type": "TitleSelectOne", "name": "Role",
"key": "role", "values": ["admin", "user"]},
]
form = form_generator("Form Foo", fields)
print(form["role"].value[0])
print(form["name"].value)
"""
def form_generator(form_title, fields):
def myFunction(*args):
form = npyscreen.Form(name=form_title)
result = {}
for field in fields:
t = field["type"]
k = field["key"]
del field["type"]
del field["key"]
result[k] = form.add(getattr(npyscreen, t), **field)
form.edit()
return result
return npyscreen.wrapper_basic(myFunction)
Мы перепробовали много способов, но не смогли:
- stringIO для захвата вывода: не удалось
- перенаправить вывод в файл: сбой
- Геката: не удалось
- Я думаю, что это работает, только если мы запустим всю программу
- pyautogui
- Я думаю, что это работает, только если мы запустим всю программу
Это полные шаги того, что у меня есть
1027 * пытался *
Поэтому последнее, что я использую, - это использование patch
. Я исправляю те
функции. Но минусы в том, что утверждения внутри этих функций
остаются непроверенными. Потому что он просто утверждает жестко возвращаемое значение.
Нахожу npyscreen docs
для написания теста. Но я не совсем понимаю. Есть только один пример.
Заранее спасибо.