[技術ブログ] Androidの自動テスト
アンドリュース自動テストツールと構築するためのプラットフォーム
ウェブ側の自動化と同様に、自動テスト・アンドリュースは、自動制御のために主にあります。原理は、スクリプトのpython(他の言語)を介して私たちの手作業を交換することです。だから、私たちが必要なツールは、Python(テストスクリプト)、Appium(アンドリュースの自動テストツール)、uiautomatorviewer.bat(アンドリュースの位置決め制御)、仮想マシンまたは(Androidのプログラムを実行している)実際のマシンです。
私たちは、自動テストおよびインストールツールの使用を導入するプロセスに従ってください。
uiautomatorviewer.bat
これは、SDKツールが付属している、主な役割は、これらのコントロールがAppiumコントロール、またはその要素であるので、アンドリュースのコントロールの位置を特定することです。要素の位置は、ウェブクライアントのクラス」、「XPathの」に似た多くの方法、あり得る 「ID」 などが挙げられます。このツールについては、GitHubには大きな神は、ツールの強化版のバージョンを共有しているポータルを。直接クラスによって比較フルパスXPathを見つけることができます強化されたバージョンは、非常に簡単に書きました。
上記の例では、ビュー要素である、それは右下の経路を介して素子に非常に簡単にアクセスすることができます。反応し、ネイティブではなくネイティブ・アンドリュース、とても便利な多くのよりも、特にこのフレームタイプのため。
Appium自動テストツール
このツールは、現在広くAndroidの自動テストツールを使用しています。しかし、公式ウェブサイトは更新を停止しているようだ、と今GitHubのメンテナンスに見えたポータルサイト。ダウンロードした後に直接インストールされていますが、ルックスだけでシステムトレイにインストールすることができます。Appium特定の使用については、このブログを参照することができますポータル。ここに記載された特定の操作のも過言ではありません。
このように起動した後、直接Pythonスクリプトを実行した後、あなたは、仮想マシンまたはAPP自動的に実行する上で実機を見ることができます。
自動化されたテストコード
仮想マシンまたは実マシンの設定
这里准确的来说是,在python 脚本中对虚拟机或者真机的操作。对python 来说,首先安装支持 Appium 运行的包,appium,然后在测试的开始要配置机器,也就是让 Appium 找到机器在哪,链接机器与 Appium,这样就可以通过 Appium来控制 机器了。
self.desired_caps = {}
self.desired_caps['platformName'] = 'Android' # 平台
self.desired_caps['deviceName'] = '192.168.221.101:5555'
# self.desired_caps['platformVersion'] = '9.0' # 系统版本
# self.desired_caps['app'] = 'E:/autotestingPro/app/UCliulanqi_701.apk' # 指向.apk文件,如果设置appPackage和appActivity,那么这项会被忽略
# self.desired_caps['deviceName'] = 'Android Emulator'
self.desired_caps['appPackage'] = 'com.cnblogandroid' # APK包名
self.desired_caps['appActivity'] = '.MainActivity' # 被测程序启动时的Activity
self.desired_caps['unicodeKeyboard'] = 'true' # 是否支持unicode的键盘。如果需要输入中文,要设置为“true”
self.desired_caps['resetKeyboard'] = 'true' # 是否在测试结束后将键盘重轩为系统默认的输入法。
self.desired_caps['noReset'] = True # true:不重新安装APP,false:重新安装app
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", self.desired_caps)
# 构建虚拟机,用于测试
这样配置之后就可以直接开始写测试代码,控制虚拟机或者真机了。但是我们为了方便,写很多个不同的测试,由于有时候测试无法连在一起,所以我们使用 unittest 框架来写测试代码。该方法的好处是,可以写多个相关或者不相关的测试实例,然后将他们组合起来,具体就是:
if __name__ == '__main__':
suite = unittest.TestSuite() # 一个测试实例
tests = [Test_Blog_HomeWork("test_blog"), test_borad("test_borad")] # 可以加入其它测试
suite.addTests(tests)
对于自动化测试,我们通常用于重复的操作,或者覆盖性的测试。那么如何判断测试的完整性呢,及代码中有没有出现未运行到的测试呢? unittest 提供了一个 UnittestTextReport 的方法。可以看到测试的情况,为了美观,unittest 还提供了 HTMLTestRunner 通过html的方式显示测试结果。