Appium自动化测试第五篇设计模式与数据驱动

1.1PO设计模式

page object(PO)模式是selenium中的一种测试设计模式,Appium也继承了这种设计模式。主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题等),这样在Appium测试页面中可以通过调用页面类来获取页面元素。当页面元素id,class等属性变化时,只需要更改测试页class中的页面属性即可。

方法意义:

  • 用公共方法代表UI所提供的功能
  • 方法应该返回其他的PageObject或者返回用于测试断言的数据
  • 同样的行为不同的结果可以建模为不同的行为
  • 不要在方法内加断言

字段意义:

  • 不要暴露页面内部的元素给外部
  • 不需要建模UI内的所有元素
  • 不要自PageObject中加入断言,应该放在测试用例中

1.2PageFactory设计模式

pageFactory的概念和page Object应该类似,属于一种设计模式,是Page Object的扩展。通过注解的方式定位元素对象,需要再构造函数里面调用PageFactory.initElements(driver.this)来初始化PO对象

常用注解:

@AndroidFindBy(id="")

@iOSFindBy(id="")

1.3数据驱动

主要介绍两种测试驱动方式。一种是将测试数据写在测试类中,另外一种写在配置文件里,如CSV,EXCEL,YAML来完成数据驱动

这里可以看下这篇文章 TestNg数据驱动

如果采用CVS等外部文件数据驱动,要做到这两步

  • 创建csv文件,将数据填充进去
  • 编写csv文件数据读取方法

csv文件工具读取参考如下:

首先创建一个文件路径类:

public class Constants {
    public static final String filename="regester.csv";
    public static final String filepah="src/main/resources/data/";
}
工具类:

public class CSVUtils {

    public static Object[][] getCSVData(String filename){
        List<Object[]> records=new ArrayList<>();
        try {
            BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(filename),"utf-8"));
            String readcord="";
            while((readcord= reader.readLine())!=null){
                String fileds[]=readcord.split(",");
                records.add(fileds);

            }
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Object[][] results=new Object[records.size()][];
       for (int i=0;i<records.size();i++){
           results[i]=records.get(i);
       }
       return  results;
    }


    public static void outpringt(Object[][] records) {
        Arrays.stream(records).map(Arrays::toString).forEach(System.out::println);
    }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值