Appium 大家是如何设计 UI 自动化用例的

kasijia · 2019年08月19日 · 最后由 槽神 回复于 2019年08月20日 · 2453 次阅读

测试框架用的是 TestNG,用例方面我目前的设计方式如下,好处是一个页面崩了(会重试 3 次)不会导致其他页面的测试受到影响,坏处是进入到每一个测试页面都需要重启 APP 并且可能会经过重复的路径,影响执行效率。虽然深知 UI 自动化稳定性大于一切,但还是想尽可能提高执行效率,不知大家有没有更好的设计方式?

【Suite】
class1:页面 1 的测试类(集合所有页面 1 的测试点)
class2:页面 2 的测试类
class3:页面 3 的测试类

【测试类】
public class class1 extends BaseCase {
@BeforeSuite(写在 base 类 BaseCase 中)
作用:生成执行用例所需的资源,例如日志/截图目录等

@BeforeClass(写在 base 类 BaseCase 中)
作用:启动 App

@BeforeClass(写在 base 类 BaseCase 中)
@Override
作用:操作元素进入 claas1 对应的测试页面

@Test
作用:测试点 1

@Test
作用:测试点 2
.
.
.
}

共收到 5 条回复 时间 点赞

BeforeClass 修改成 BeforeTest 我觉得就不会重启 App 了

J 回复

BeforeTest 相当于每个用例(@Test下的方法)执行前都会执行一次,而我目前只会在切换页面(class)的时候才会重新启动。

不用没条 case 都重启 app 吧,可以封装一个通用的方法,执行完 case 返回到首页或特定页面,放在 AfterMethod 里面,而如果要处理执行 case 崩溃的问题,可以再封装一个方法,先判断当前 app 是否处于前台状态,不在的话,再重启 app,也放在 AfterMethod 中调用

xiaoxiao 回复

多谢提供思路。决定把返回首页的步骤放在@AfterClass里,每个 class 中的 case 执行完后返回首页,然后继续执行下一个 class 中的 case,假如返回失败就重启 APP。😀

kasijia 回复

是吗,我怎么记得 TestNG 的@BeforeTest作用于 suite 里面的 Test 声明呢,一个 test 里面可以有多个 class,一个 class 可以多个 method,你所说的@Test注解,起作用的怕不是@BeforeMethod
我很久没用了(最后接触的是 6.4),不知道现在 TestNG 改版了没有~

kasijia 关闭了讨论 08月20日 09:53
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册