当前位置: 移动技术网 > IT编程>开发语言>Java > 2:PO思想的实战 JavaAppium

2:PO思想的实战 JavaAppium

2020年10月09日  | 移动技术网IT编程  | 我要评论
PO思想的实战 JavaAppium说到自动化测试,大家提到的往往是PO设计思想。我简单说一下我对PO设计思想的理解:什么是PO思想?PageObject是一种测试设计模式减少冗余的代码和对代码进行管理,分离测试步骤及测试对象。PO的好处将测试用例及测试对象分离,提高用例可维护性,集中管理元素对象,代码可复用,降低成本,不同PO之间没有交叉,可以支持并行开发。以上为百度百科的说明,通俗点就是按照MVC的原则,实现界面Page,功能逻辑Controller,测试数据Data的分离,降低测试用例的复

PO思想的实战 JavaAppium

说到自动化测试,大家提到的往往是PO设计思想。我简单说一下我对PO设计思想的理解:

什么是PO思想?
PageObject是一种测试设计模式减少冗余的代码和对代码进行管理,分离测试步骤及测试对象。

PO的好处
将测试用例及测试对象分离,提高用例可维护性,集中管理元素对象,代码可复用,降低成本,不同PO之间没有交叉,可以支持并行开发。

以上为百度百科的说明,通俗点就是按照MVC的原则,实现界面Page,功能逻辑Controller,测试数据Data的分离,降低测试用例的复杂度和维护难度。看过上一篇文章的现在应该就会明白分别对应的项目目录中的page,controller,data目录。

下面的我抖音为例,说明一下Page,Controller,Pager的写法

  1. 我们需要初始化一下项目:
public class Application extends Bootstrap{

    //系统初始化
    @Override
    public void init() {
        InputStream io = getClass().getResourceAsStream("app.properties");
        initConfig(io);
    }

    //注册数据模板
    @Override
    public void register() {
        APIDataCenter.getShareInstance().register(DySearchcKey.class);
        APIDataCenter.getShareInstance().upload();
    }


}

数据中心下一篇文章会讲到。

  1. 编写程序界面:
@SwipePage(pages = 0)
public class DyIndexPage extends BasePage {

    @AndroidElement(uiText = "关注",time = 10)
    public MobileElement follow;
    @AndroidElement(uiText = "推荐",time = 10)
    public MobileElement recommend;
    @AndroidElement(uiResourceId = "com.ss.android.ugc.aweme:id/bfq",time = 10)
    public MobileElement search;

    public DyIndexPage() {

    }

    public DyIndexPage(AppiumDriver driver) {
        super(driver);
    }
}

通过注解的方式查找元素,@SwipePage 解决元素不在首屏的问题,@AndroidElement用来查找具体元素,可以通过uitext,id,resource,class等 定位的具体用法可以去API网站:http://test.igood.wang

重点:界面类必须有一个无参的构造函数。

3.编写控制器


public class DyIndexController extends BaseController<DyIndexPage> {

    public DyIndexController(AppiumDriver driver) {
        super(driver);
    }
}

4.编写测试用例

public class DyTest extends BaseTest {

    @Test
    public void swipDy(){
        DyIndexController indexController = new DyIndexController(driver);
        Swipe.SwipeUp(driver,10);
    }

    @Override
    public String appType() {
        return "android";
    }

    @Override
    public Bootstrap bootstrap() {
        return new Application();
    }
}

效果如下:

https://igood.oss-cn-beijing.aliyuncs.com/DyExample.mp4

本例只罗列了基本结构,控制器中并未添加具体业务逻辑。以后会逐渐丰富起来。
Demo下载地址:https://igood.oss-cn-beijing.aliyuncs.com/DYExample.zip

本人诚接各类商业化App自动化测试工作,如果您是一家公司,想借助自动化测试解决当前服务问题,可以联系我。微信号:CompanyAiHelper

本文地址:https://blog.csdn.net/qq_20485125/article/details/108985222

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网