【问题标题】:Python testing ncursesPython 测试 ncurses
【发布时间】:2015-06-12 20:28:35
【问题描述】:

我正在开发终端应用程序。我想知道怎么能 测试使用 ncurses 制作的终端用户界面。有人对这种测试有一些经验吗?

  • 到目前为止,我最好的方法是使用 capturing stdout 测试应用程序并将其与应有的结果进行比较。但我担心我永远无法为每个终端尺寸、(256 位、24 位)的文本颜色代码等创建可比较的案例......

  • 一种测试方法是模拟键盘,但如何测试视觉行为?

我对这个问题一无所知...

【问题讨论】:

    标签: python ncurses


    【解决方案1】:

    比较屏幕输出很困难,因为 ncurses 使用光标寻址和其他方法仅更新屏幕的更改部分。相反,比较 ncurses 在不同时间点已知的屏幕内容是最好的方法。

    您可以使用instr 构造一个屏幕转储来获取文本(但省略了颜色等属性)。 ncurses 的 Python 接口也有 inch(但假设字符是 8 位)

    使用putwin 会很好,但是(直到最近)以二进制 形式保存窗口。即将推出的 ncurses6 使用 text dump,这可能会有所不同。调用者看不到更改(因为 putwin/getwin 始终将文件格式视为机密),原则上可以在 ncurse5 的构建中打开。为此,您可能必须构建自己的 ncurses。

    【讨论】:

    • 哇,谢谢你的链接资源!这就是我一直在寻找的东西,您可以从特殊的窗口坐标中读取以测试简单的字符和文本位置,颜色具有次要优先级,因此 instr 将是要走的路。再次感谢!
    【解决方案2】:

    您可能想要查看的程序是一个名为Expect 的TCL 脚本。它旨在自动化基于文本的交互。

    根据维基百科:

    [Expect] 用于自动控制交互式应用程序,例如 telnet、ftp、passwd、fsck、rlogin、tip、ssh 等。 Expect 使用伪终端 (Unix) 或模拟控制台 (Windows),启动目标程序,然后像人类一样通过终端或控制台界面与其通信。

    我想您可以设置一个 Expect 脚本来运行标准交互,并在此过程中报告任何交互问题。

    我怀疑任何程序都可以测试美学(即它看起来如何,等等...),但是您可能可以测试界面是否适合屏幕并且各个窗口不重叠等等。向 PyCurses 函数调用添加一个装饰器,用于跟踪各个部分的尺寸并报告任何重叠或问题。

    有关 Python 装饰器的更多信息,请查看这篇文章:Understanding Python Decorators in 12 Easy Steps!

    【讨论】:

    • Thanx for the info obout Expect,我不知道这个库,它也有python绑定! :)
    猜你喜欢
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2012-01-11
    相关资源
    最近更新 更多