51Testing软件测试论坛

标题: Appium+Robotframework实现Android应用的自动化测试-7:模拟器频繁挂掉的解决方案 [打印本页]

作者: w_d775    时间: 2015-8-18 14:19
标题: Appium+Robotframework实现Android应用的自动化测试-7:模拟器频繁挂掉的解决方案

如果测试用例比较多,则当持续运行多个测试用例后,经常会出现模拟器崩溃或者Appium无法连接到该模拟器的情况出现。

经过分析,本人认为这应该是模拟器或者Appium的缺陷造成的,目前并没有直接的解决方案。

不过可以曲线救国,我的解决方案是:在开始测试时启动模拟器,在测试结束后关闭模拟器,这样虽然需要更多的时间,但这个问题确实不再出现了,时间有的是,可以让其在夜间自动启动执行就可以了。

在Settings中加入Process库,这个库是Robotframework自带的,写明即可。

  1. *** Settings ***
  2. Library           AppiumLibrary
  3. Library           Process
复制代码

启动和关闭模拟器的脚本如下:

  1. StartEmulator
  2.     Run Process    emulator    @xxx   
  3.     Sleep    180s

  4. EndEmulator
  5.     Run Process    tskill    emulator-arm
  6.     Run Process    tskill    adb
复制代码

通过调用Process库的Run Process关键字来做到调用相关的程序。调用emulator就会启动模拟器,xxx是模拟器的名字,如下图所示:



Sleep   180s的目的是等待模拟器完成启动过程,这个三分钟足够了。

调用tskill后杀死指定名称的进程,不多解释了。

这里再介绍下Suite Setup,Suite Teardown以及Test Setup和Test Teardown ,它们分别是两组关键字:Suite Setup表示在一组测试用例执行前执行,Suite Teardown表示在一组测试用例执行后再执行;Test Setup表示在每个测试用例执行前执行,Test Teardown表示在每个测试用例执行后再执行。一组测试用例写在同一个文件中。

在具体的测试脚本的文件的Settings中有如下脚本:

  1. *** Settings ***
  2. Suite Setup       StartEmulator
  3. Suite Teardown    EndEmulator
复制代码



作者: jingzizx    时间: 2015-8-19 09:20
解决方案是:在开始测试时启动模拟器,在测试结束后关闭模拟器,这样虽然需要更多的时间,但这个问题确实不再出现了,时间有的是,可以让其在夜间自动启动执行就可以了。

支持分享
作者: fengye1113    时间: 2015-11-23 14:59
学习了,谢谢分享!
作者: hiphop_c    时间: 2016-2-22 23:38
楼主,有其他模拟器吗,自带的感觉很慢也,你们慢吗




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2