2015-06-12 48 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