Python测试ncurses

9
我正在开发终端应用程序。我想知道如何测试使用ncurses制作的终端用户界面。有谁有此类测试经验吗?
到目前为止,我最好的方法是使用 捕获stdout 并将其与应该有的内容进行比较。但我担心我可能无法为每个终端大小、文本颜色代码(256位、24位)等创建可比较的情况。
一种测试方法是模拟键盘,但如何测试可视行为呢?
我对这个问题毫无头绪...
2个回答

1
比较屏幕输出很困难,因为ncurses只更新屏幕上被更改的部分,使用光标寻址和其他方法。相反,比较在不同时间点上已知于ncurses的屏幕内容是最好的方法。
您可以使用instr构建屏幕转储以获取文本(但这会省略颜色等属性)。Python接口到ncurses也有inch(但这假定字符是8位)。

希望使用putwin,但直到最近它仅保存二进制形式的窗口。即将发布的ncurses6使用文本转储,可进行差异比较。这一变化对调用者不可见(因为putwin/getwin始终将文件格式视为机密),并且原则上可以在ncurse5的构建中启用。为此,您可能需要构建自己的ncurses。


谢谢提供这些链接资源!这正是我一直在寻找的,可以从特定窗口坐标读取并测试简单字符和文本位置,颜色次要,所以指令将是最好的选择。再次感谢! - user2081554

1
您可能想要查看的程序是一个名为Expect的TCL脚本。它旨在自动化基于文本的交互。
根据维基百科:
[Expect]用于自动控制诸如telnet,ftp,passwd,fsck,rlogin,tip,ssh和其他交互式应用程序。Expect使用伪终端(Unix)或仿真控制台(Windows),启动目标程序,然后通过终端或控制台界面与其通信,就像人类一样。
我想你可以设置一个Expect脚本来运行标准交互,并报告沿途的任何交互问题。
我怀疑是否有任何程序可以测试美学(即它看起来如何等),但您可以通过添加装饰器到PyCurses函数调用中来跟踪各个部分的尺寸并报告任何重叠或问题,以此来测试界面是否适合屏幕和各种窗口不重叠等。
有关Python装饰器的更多信息,请查看这篇文章:在12个简单步骤中理解Python装饰器!

谢谢关于Expect的信息,我之前不知道这个库,而且它还有Python绑定! :) - user2081554

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接