微信小程序自动化测试框架 Minium——PO模式测试用例

本文介绍了PO模式在自动化测试项目中的使用,包括其减少代码冗余、分离业务与实现、降低维护成本的优点。文章详细阐述了PO模式的层级结构,如基础层、操作层和测试用例层,并展示了如何通过BaseCase和BaseDef类进行初始化和方法封装。此外,还提供了页面对象如HomePage的实现示例,以及测试用例如AppTest、ElementTest等的编写方式。

本文主要介绍PO模式的测试用例,PO模式优点及层级间的关系,相关配置及运行

minitest的测试小程序和测试case:minitest-demo

  • miniprogram-demo:测试小程序
  • testcase:测试case,同时也包含文档的测试case
  • testcase-PO:Page Object(PO) 模式的测试case

PO简介

PO模式是自动化测试项目开发实践的最佳设计模式之一。通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。

优点:

  • 减少代码冗余
  • 业务和实现分离
  • 降低维护成本

PO用例层级

  1. 基础层base,初始化、封装Minium的原生方法
  • BaseCase:初始化Minium实例,继承MiniTest类
  • BaseDef:封装Minium的页面跳转、元素定位等方法
  1. 操作层pages,页面对象层,各页面的元素定位,操作等
  • BasePage:封装公用页面基础操作方法,继承BaseDef类
  • HomePage:首页相关元素定位及相关操作等,继承BaseDef类
  1. 测试用例层,主要负责业务逻辑和数据驱动(继承BaseCase类,初始化BasePage、HomePage类)
  • AppTest:测试hook用例
  • ElementTest:测试操作不同组件用例
  • LoginTest:测试登录授权用例
  • NativeTest:测试处理原生控件用例
  • PageTest:测试页面元素定位用例

BaseCase基类

测试用例基类,继承MiniTest类。复写minium.MiniTest类里面的setUpClass、tearDownClass、setUp、tearDown方法

class BaseCase(minium.MiniTest):
    """
    初始化Minium实例,测试用例基类
    """

    @classmethod
    def setUpClass(cls):
        super(BaseCase, cls).setUpClass()

    @classmethod
    def tearDownClass(cls):
        super(BaseCase, cls).tearDownClass()

    def setUp(self):
        pass

    def tearDown(self):
        pass

BaseDef公用方法类

封装Minium的页面跳转、元素定位等方法

class BaseDef:
    """
    封装Minium的页面跳转、元素定位等方法
    """

    def __init__(self, mini):
        """
        基类初始化 Minium 实例
        """
        self.mini = mini

    def navigate_to_page(self, route):
        """
        跳转到指定页面
        """
        self.mini.app.navigate_to(route)
        ret = self.wait_page(route)
        return ret

    def redirect_to_page(self, route):
        """
        跳转到指定页面并关闭当前页面
        """
        self.mini.app.redirect_to(route)
        ret = self.wait_page(route)
        return ret

	## ...

/pages 页面对象类

页面对象层,各页面的元素定位,操作等

BasePage基础页面对象类

封装公用页面基础操作方法,继承BaseDef类。例如hook wx API接口,点击元素,获取回调;hook 原生控件弹窗,点击元素,处理弹窗,获取回调等

class BasePage(base_def.BaseDef):
    """
    封装公用页面基础操作方法
    """

    def hook_wx_method(self, method, selector):
        """
        封装hook wx API接口,获取回调
        :param method: API接口
        :param selector: 触发元素选择器
        :return: 信号量,回调信息
        """
        called = threading.Semaphore(0)  # 信号量
        callback_args = None

        def callback(args):
            nonlocal callback_args
            called.release()
            callback_args = args

        # hook wx API接口,获取回调后执行callback
        self.mini.app.hook_wx_method(method, callback=callback)
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值