图解App自动化PO模式+数据驱动(附github代码地址)
PO模式和数据驱动的UI自动化框架,已经在各个企业中得到广泛的使用,因为它的优点就是元素定位信息以页面为单位提取,方便管理,提高后期的维护效率。本文的github代码仓库地址:https://github.com/yx-stack/appAutoTest。自动化测试对象为百联奥莱app。
一、PO模式的图解
这张图概括起来说就是:一个页面是一个类,元素在页面中,所以每个元素的定位信息是这个类中的一个变量。这个页面的常规业务操作是这个类中的一个个成员方法,测试脚本直接调用统一入口类中的页面类的业务操作方法。同时将获取driver,读取yaml文件数据独立出来,以便复用。

二、项目目录

三、对象库层(元素定位对象类)

1、 元素定位按照页面区分,分别存储在不同页面
2、 因为在第六条中,base基类中使用的是显示等待,拆包定位元素的方式,所以在元素定位页面存储的方式为元组(定位方式,属性值),每一个元素定位写好注释是哪个元素,方便重复调用。
3、 调用方法:先把元素定位引入需要调用的文件,别名统称loc
4、 有新增的元素定位继续在框架内补充即可

四、页面对象层
页面对象与测试用例分离
1、 页面对象按照不同页面进行存放
2、 页面对象为对页面进行的具体操作(执行用例所需要的步骤),每一个操作都写上清晰的注释以方便调用
3、 需要继承Base类初始化一个driver
4、 操作中需要调用元素定位层的元素定位进行元素的各种操作
5、 每个操作的命名要见文知意

6、所有的页面类可以放入一个统一入口类中,这样在测试脚本类中只需要初始化统一入口类即可,而不需要将每个页面都一一初始化。

五、测试脚本(业务层)
1、 测试用例按照测试的不同模块分别存放(可以大模块下面继续细分),每一条测试用例都写上详细的注释,对应测试的功能
2、 测试用例的要素:①前置条件②执行步骤③数据检查及断言
3、 用例的前置后置处理函数处理前置后置条件
4、@pytest.mark.parametrize(参数名称,参数值)方法来获取取yaml文件数据,前提是需要解析成list格式。
5、捕获异常里需要添加截图
截图可以存放到指定目录,截图方法封装在base类中可以直接调用。
6、使用allure装饰器添加报告,详细使用教程见自动化测试pytest+allure报告示例教程(保姆级别)_python 使用pytest运行代码生成arrue报告的条件有哪些-CSDN博客


六、基础类和共用的类
基础类base中主要重写获取元素,点击、输入文本的元素,滚动页面,截图等方法。

单独将获取driver对象写到一个类中。

获取数据文件的方法分别写到一个类中,方便复用。

更多推荐

所有评论(0)