Как вы тестируете свое приложение ncurses на Python? - PullRequest
0 голосов
/ 17 сентября 2018

Мы создали 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 для написания теста. Но я не совсем понимаю. Есть только один пример.

Заранее спасибо.

1 Ответ

0 голосов
/ 17 сентября 2018

Я не вижу упоминания в документах Python , но вы можете использовать функцию screen-dump библиотеки curses для сбора информации для анализа.

...