天天看點

IronRuby - 編寫自動化測試腳本

在<b>使用vs2010的codedui來做自己的自動化測試架構</b>中我介紹過,我将使用ironruby來編寫自動化測試腳本,由于對ironruby不熟悉,在開發中遇到過一些問題。我對這些問題之前也進行了blog分享,本篇我将給大家介紹一下如何使用ironruby和codedui提高的自動化測試類庫來編寫我們自己的自動化測試腳本,後期會在<b>openexpressapp</b>主題中再介紹編寫opentest.ui的一些過程,感興趣的可以關注下。

.net framework 4

  codedui自動化相關測試類庫放置在<b> microsoft visual studio 10.0\common7\ide\privateassemblies\</b> 檔案夾中,具體每個程式集的内容我并不是很清楚,有對微軟自動化測試架構感興趣的可以去看看下,我現在還用不到就不研究了:)

IronRuby - 編寫自動化測試腳本

   這裡假定我們放到目錄<b>d:/gzj/openexpressapp/tool/opentest/dll</b>

  這裡我們拿一個大家都知道的window自帶的記事本來做測試,路徑為:c:/windows/system32/calc.exe

IronRuby - 編寫自動化測試腳本

由于查找button等功能可以複用,編寫幾個函數:

view sourceprint?

<code>01</code>

<code>def</code> <code>window(title)</code>

<code>02</code>

<code>    </code><code>win = winwindow.</code><code>new</code>

<code>03</code>

<code>    </code><code>win.searchproperties[</code><code>"name"</code><code>] = title</code>

<code>04</code>

<code>    </code><code>win</code>

<code>05</code>

<code>end</code>

<code>06</code>

<code> </code> 

<code>07</code>

<code>def</code> <code>button(parent, title)</code>

<code>08</code>

<code>    </code><code>btn  = winbutton.</code><code>new</code><code>(parent);</code>

<code>09</code>

<code>    </code><code>btn.searchproperties[</code><code>"name"</code><code>] = title</code>

<code>10</code>

<code>    </code><code>btn</code>

<code>11</code>

<code>$load_path</code> <code>&lt;&lt;</code><code>'d:/gzj/openexpressapp/tool/opentest/dll'</code>

<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.dll"</code>

<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.ie.dll"</code>

<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.ie.communication.interop.dll"</code>

<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.msaa.dll"</code>

<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.uia.dll"</code>

<code>require</code><code>"microsoft.visualstudio.testtools.uitest.framework.dll"</code>

<code>require</code><code>"microsoft.visualstudio.testtools.uitesting.dll"</code>

<code>require</code><code>"microsoft.visualstudio.testtools.uitest.playback.dll"</code>

<code>12</code>

<code>include microsoft::visualstudio::testtools::uitesting</code>

<code>13</code>

<code>include microsoft::visualstudio::testtools::uitesting::wincontrols</code>

<code>14</code>

<code>15</code>

<code>16</code>

<code>17</code>

<code>18</code>

<code>19</code>

<code>20</code>

<code>21</code>

<code>22</code>

<code>23</code>

<code>24</code>

<code>25</code>

<code>26</code>

<code>27</code>

<code>playback.initialize()  #注意必須加這句,不然提示playback的錯誤</code>

<code>28</code>

<code>29</code>

<code>app = applicationundertest.launch(</code><code>'c:/windows/system32/calc.exe'</code><code>)</code>

<code>30</code>

<code>31</code>

<code>calc_window = window(</code><code>"電腦"</code><code>)</code>

<code>32</code>

<code>btn_1 = button(calc_window,</code><code>"1"</code><code>)</code>

<code>33</code>

<code>btn_2 = button(calc_window,</code><code>"2"</code><code>)</code>

<code>34</code>

<code>btn_add = button(calc_window,</code><code>"+"</code><code>)</code>

<code>35</code>

<code>btn_equal = button(calc_window,</code><code>"="</code><code>)</code>

<code>36</code>

<code>btn_value = winedit.</code><code>new</code><code>(calc_window)</code>

<code>37</code>

<code>38</code>

<code>mouse.click btn_1</code>

<code>39</code>

<code>mouse.click btn_add</code>

<code>40</code>

<code>mouse.click btn_2</code>

<code>41</code>

<code>mouse.click btn_equal</code>

<code>42</code>

<code>puts</code><code>"1+2=3:太高科技了,電腦算對了"</code> <code>if</code> <code>btn_value.text.to_i  ==</code><code>3</code>

<code>43</code>

<code>44</code>

<code>45</code>

<code>keyboard.sendkeys(</code><code>"c"</code><code>);</code>

<code>46</code>

<code>keyboard.sendkeys(</code><code>"2"</code><code>);</code>

<code>47</code>

<code>keyboard.sendkeys(</code><code>"*"</code><code>);</code>

<code>48</code>

<code>49</code>

<code>keyboard.sendkeys(</code><code>"."</code><code>);</code>

<code>50</code>

<code>51</code>

<code>keyboard.sendkeys(</code><code>"{enter}"</code><code>);</code>

<code>52</code>

<code>puts</code><code>"2*2.2=4.4:受不了了,連小數和乘法都會了"</code> <code>if</code> <code>btn_value.text.to_f  ==</code><code>4</code><code>.</code><code>4</code>

<code>53</code>

<code>54</code>

<code>app.close</code>

<code>55</code>

<code>56</code>

<code>playback.cleanup()</code>

運作後你可以看到,代碼會把電腦打開,然後根據腳本編寫意圖點選和按鍵,最終輸出結果。

在netbeans下檢視測試結果:

IronRuby - 編寫自動化測試腳本

在dos視窗輸出是亂碼,不知道有誰知道如何更改這個視窗的字元編碼?

IronRuby - 編寫自動化測試腳本

檔案使用utf-8或者utf8 without bom格式 

必須調用playback.initialize()

codeui的dll必須引用完整

ironruby - 快速在半小時學習ruby基礎知識

ironruby - 檔案編碼惹的禍

ironruby - 使用netbeans編寫ironruby代碼

ironruby - 怎麼就沒有好用的ide呢??

ironruby - 如何在vs2010下調試ironruby代碼

使用vs2010的codedui來做自己的自動化測試架構

以上代碼下載下傳:http://files.cnblogs.com/zhoujg/testcalc-ruby.net4.rar

<b>歡迎轉載,轉載請注明:轉載自</b><b>周金根 [ http://zhoujg.cnblogs.com/ ]</b>

繼續閱讀