如何在Python中测试ncurses应用程序?

2024-04-25 04:45:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我们用Python构建了cli应用程序。有些部分需要课程,所以我们使用 NPY屏幕。我们已经使用pytest成功地测试了大部分应用程序 (在mock和其他东西的帮助下)。但我们坚持“如何测试” 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:失败
  • 将输出重定向到文件:失败
  • Hegate:失败
    • 我认为只有我们运行整个程序才有效
  • 皮奥托吉
    • 我认为只有我们运行整个程序才有效

这是我所拥有的全部步骤 tried

所以我最后使用的是patch。我把它们补上 功能。但缺点是这些函数中的语句 未经测试。因为它只是断言硬编码的返回值。在

我找到npyscreen docs 写作测试。但我不完全明白。只有一个例子。在

提前谢谢你。在


Tags: key代码nameform应用程序fieldfieldstype