python单元测试的应用_单元测试pythongui应用程序的推荐方法是什么?
我目前愚蠢到試圖為Python桌面應(yīng)用程序維護(hù)兩個(gè)并行代碼基,一個(gè)使用PyGObject introspection for GTK 3,另一個(gè)使用PyGTK for GTK 2。我主要在PyGObject分支上工作,然后將變更移植到PyGTK分支上。由于這些實(shí)現(xiàn)之間的所有細(xì)微差異,我經(jīng)常忽略一些東西,并導(dǎo)致我錯(cuò)過(guò)并意外發(fā)布的破壞,結(jié)果被用戶發(fā)現(xiàn)。在
我正試圖找到一種好的方法來(lái)設(shè)計(jì)一些單元測(cè)試,這些單元測(cè)試最好能在兩個(gè)代碼基上運(yùn)行。想象一下,它本質(zhì)上不是一個(gè)復(fù)雜的程序庫(kù):- Main Window
|- Toolbar with some buttons (add/edit/remove items, configure the program)
|
|- VPaned
|--- Top HPaned
|------ ListView (listing values by which a library of items can be filtered)
|------ ListView (listing the contents of the library
|--- Bottom HPaned
|------ Image (displaying cover art for the currently selected item in the library)
|------ TextView (displaying formatted text describing the currently selected item)
- Edit dialog
- Configuration dialog
- About dialog
我已經(jīng)盡可能地把視圖和模型分開(kāi)。每一個(gè)項(xiàng)目都在自己的類中實(shí)現(xiàn)(好吧,在繼承了所列GTK類的類中)。ListViews與從ListStores繼承的其他類耦合在一起。庫(kù)本身由另一個(gè)類處理。盡管如此,小部件之間仍然存在需要測(cè)試的交互。例如,如果用戶在filter視圖中選擇了一個(gè)特定的項(xiàng)目,過(guò)濾了庫(kù),然后從過(guò)濾的結(jié)果中選擇了一個(gè)項(xiàng)目,那么文本視圖必須顯示正確的庫(kù)條目的信息,由于在TreeModelFilter和原始ListStore之間轉(zhuǎn)換iter等,這是半復(fù)雜的
所以,我問(wèn),為這樣一個(gè)GUI應(yīng)用程序編寫健壯的單元測(cè)試的推薦方法是什么?我已經(jīng)看到有一些庫(kù)用于這一點(diǎn),但是pygtk的主要庫(kù)已經(jīng)多年沒(méi)有更新了,因此它們幾乎肯定會(huì)在PyGObject自省中失敗。也許我沒(méi)有足夠的創(chuàng)造力來(lái)想出一個(gè)使用Python的unittest模塊的好方法,所以我愿意接受建議。在
總結(jié)
以上是生活随笔為你收集整理的python单元测试的应用_单元测试pythongui应用程序的推荐方法是什么?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sony android 计算器,Neo
- 下一篇: gdal 压缩tif_Python |