2013/06/05

Sikuliのテスト結果をXML出力できるようにする

SikuliでXMLリポートを出力できるようになると、Jenkinsなどでちゃんと利用できるようになるので非常に便利です。

以前試したSikuli内のテストの機能では簡単にXMLが出せそうになかったので諦めていたのですが、unittest.pyを利用したらXML出力できるようになりましたので、その手順を紹介します。

なお、今回利用したのはSikuliXのベータ版である1.0-Beta999で、 現在の正式版である1.0.0での動作は確認していませんが、多分大丈夫ではないかと思います。

テストケースの作成

まず、テストケースを作成します。

以前の記事「シミュレータ上でのiOSアプリのGUIテストをSikuliで自動化する」のような、 暗黙のクラス宣言を利用せずに、Pythonのunittest.pyのTestCaseを継承したクラスを作成します。

とは言っても先頭にクラス宣言を付けてインデントさせるだけなので、ここでは省略します。

import unittest

class MyTestCase(unittest.TestCase):
    def setUp(self):
        app_path = "/Applications/Xcode.app/.../iPhone Simulator"
        self.app = App(app_path)
          :

    def tearDown(self):
        self.closeAppIfRunning()

ただし、以前のものはJUnitを利用していたので、assert関連で利用できないメソッドがあったりする点には注意です。

なお、unittest.pyはsikuli-script.jarのLib内にあり、ここにあるPythonファイルはインポートすれば利用できるみたいです。

TextTestRunnerの設定

まずは、これがテストとして実行できるかどうかを試してみましょう。

Sikuliのソース末尾に次のようなコードを追加してください。

loader = unittest.TestLoader()
module = __import__('__main__')
test = loader.loadTestsFromModule(module)
testRunner = unittest.TextTestRunner(verbosity=2)
testRunner.run(test)

これで、SikuliX-IDE上でRunすると次のようなメッセージが表示されるでしょう。

testActionButtonClick (__main__.MyTestCase) ... ok
testInitWindow (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 2 tests in 10.548s

OK

XmlTestRunnerの設定

XMLを出力できるTestRunnerを.sikuli内に追加して利用できるようにします。

  1. unittest-xml-reportingを取得して解凍

  2. src/xmlrunner/__init__.pyを.sikuliのフォルダ内にxmlrunner.pyとしてコピー

  3. Sikuliのソース先頭にimport xmlrunnerを追加

  4. Sikuliのソース末尾のコードを次のように修正

    loader = unittest.TestLoader()
    module = __import__('__main__')
    test = loader.loadTestsFromModule(module)
    testRunner = xmlrunner.XMLTestRunner(verbosity=2)  # XMLTestRunnerにする
    testRunner.run(test)
    

これで、SikuliX-IDE上でRunすると次のようなメッセージが表示されるでしょう。

Running tests...
----------------------------------------------------------------------
 testActionButtonClick (__main__.MyTestCase) ... OK (4.568s)
 testInitWindow (__main__.MyTestCase) ... OK (6.410s)

----------------------------------------------------------------------
Ran 2 tests in 10.979s

OK

Generating XML reports...

これで、TEST-MyTestCase–20130604004758.xmlのようなファイルが生成されているはずです。

関連リンク

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。