2011年1月7日星期五

Sikuli X 之 如何创建GUI单元测试脚本

Sikuli集成了jUnit,所以支持图形用户界面的单元测试。在Sikuli IDE中通过快捷键 Ctrl-U或者菜单View下的Unit就可以打开单元测试面板。

Sikuli IDE旨在尽力减少代码输入,所以在Sikuli IDE中,一个继承自junit.framework.TestCase的Python类会自动生成并把你的单元测试脚本包起来。

通常,一个单元测试脚本包含有构造和析构函数,分别是setUp()和tearDown(),还包含一堆以test为前缀的测试方法。

单元测试脚本的基本结构如下:
 def setUp(self):  openApp("AnyRandom.app")   wait(SCREENSHOT_OF_THE_APP) # wait until the app appears  def tearDown(self):  closeApp("AnyRandom.app")   untilNotExist(SCREENSHOT_OF_THE_APP) # wait until the app disappears  def testA(self):  ....   assert exists(PICTURE_THAT_SHOULD_BE_THERE)  def testB(self):  ....   assert not exists(PICTURE_THAT_SHOULD_NOT_BE_THERE)

要运行单元测试脚本,需要点击单元测试面板上的“Run”按钮,而不是普通的运行按钮。

另外,也可能从命令行使用选项 -t test-script来运行单元测试脚本。


是软件就会有BUG

为了证明是软件就会有BUG,把翻出来的几张旧图贴贴。请看红色圈。

标题是"讨好主人",内容却是买好友。
<a href="http://blog.boyue.info/wp-content/uploads/2010/12/friendbuy.png"><img class="alignnone size-medium wp-image-38" src="http://blog.boyue.info/wp-content/uploads/2010/12/friendbuy-300x201.png" alt="QQ 讨好主人是买好友" width="300" height="201" /></a>

反过来的BUG也是可能的。
<a href="http://blog.boyue.info/wp-content/uploads/2010/12/qqfriend.png"><img class="alignnone size-medium wp-image-44" title="qqfriend" src="http://blog.boyue.info/wp-content/uploads/2010/12/qqfriend-300x197.png" alt="QQ 买好友与讨好主人" width="300" height="197" /></a>

主窗体状态是在线,任务栏图标却是离线。
<a href="http://blog.boyue.info/wp-content/uploads/2010/12/qqstatus.png"><img class="alignnone size-medium wp-image-39" src="http://blog.boyue.info/wp-content/uploads/2010/12/qqstatus-171x300.png" alt="QQ状态" width="306" height="450" /></a>

还有某些时候出现的 第22页/总21页,数数确实是个难题。