2015-06-12 49 views
7

我正在开发终端应用程序。我想知道一个 如何测试用ncurses制作的终端用户界面。有没有人有这种测试的经验?Python测试ncurses

  • 到目前为止,我的最佳拍摄将是测试应用程序与capturing stdout并将其与它应该是什么进行比较。但我担心,我永远不会创建每个终端大小的可比情况,文本颜色代码为(256位,24位)等...

  • 一种测试方法是模拟键盘,但怎么可能我测试视觉行为?

我无能obout这个问题...

回答

1

比较画面输出是困难的,因为ncurses的更新只有屏幕的改变的部分,使用光标寻址等方法。相反,在不同时间点比较已知的屏幕内容是最好的方法。

您可以使用instr构建屏幕转储以获得文本(但省略了诸如颜色之类的属性)。 Python的接口的ncurses也有inch(但假设字符是8位)

这将是很好使用putwin,但直到最近在二进制形式保存窗口。即将到来的ncurses6使用text dump,这可能是diff'd。这个改变对于调用者来说是不可见的(因为putwin/getwin总是将文件格式视为一个秘密),并且原则上可以在构建ncurse5时打开。为此,您可能需要构建自己的ncurses。

+0

WAW thanx的链接巨大的资源!这就是我正在寻找的东西,你可以从特殊的窗口坐标来测试简单的字符和文本位置,颜色具有次要优先级,所以instr将是要走的路。再次感谢! – urosjarc

1

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

每百科:

[期待]用于自动化的交互式应用,如远程登录,FTP,passwd中的fsck,远程登录,尖端,SSH和其他控制。 Expect使用伪终端(Unix)或模拟控制台(Windows),启动目标程序,然后通过终端或控制台界面与人进行通信。

我想你可以设置一个Expect脚本来运行标准的交互并报告任何交互问题。

我怀疑任何程序都可以测试美观性(即它如何看待眼睛等),但是您可以测试界面是否适合屏幕以及各种窗口是否重叠等。通过在PyCurses函数调用中添加一个装饰器来跟踪各个部分的尺寸并报告任何重叠或问题。

更多关于Python的装饰,看看这篇文章:Understanding Python Decorators in 12 Easy Steps!

+0

Thanx的信息obout期待,我不知道这个lib的obout,它也有python绑定! :) – urosjarc