小程序自动化之minium

这篇具有很好参考价值的文章主要介绍了小程序自动化之minium。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文采用微信开发者工具和minium进行编码

官方文档:小程序云测-MiniTest

环境搭建:

  • 1.  python安装minium第三方库,执行minium -v 验证
    •    
      pip install minium
  •  2. 下载微信开发者工具文档版本
    • 下载链接: 微信开发者工具下载地址与更新日志 | 微信开放文档
  •  3. 设置微信开发者工具
    • 小程序自动化之minium
  • 4. 找开发要源代码

框架介绍:

小程序自动化之minium

1. cases:  测试用例基类和公共方法

        BaseCase.py: 测试用例的基类

        BasePage.py: 页面的公共方法

2. outputs:  测试报告存放目录

3. pages:  页面元素和动作,一个页面一个类

4. test: 测试用例

5. route.py: 公共路径

6. config.json: 项目配置

7. suite.json: 批量运行配置

 

代码示例:

1. 编写配置文件 config.json

{
    "project_path": "D:/workspace/csx-taro-bbc/miniapp", # 小程序源代码路径
    "dev_tool_path": "D:/WXKFZGJ/kfzgj/cli.bat",   # 微信开发者工具路径
    "platform": "ide",   # 运行平台
    "outputs": "outputs",  # 日志输出目录
    "debug_mode": "warn"   # 日志打印级别
  }

2. 编写 suite.json 批量运行文件

{
    "pkg_list": [
      {
        "case_list": [
          "test_*"
        ],
        "pkg": "test.*_test"
      }
    ]
  }

3. 首先编写测试用例的基类: cases-->base--> BaseCase.py ; 继承minium.MiniTest

# 重写miniumTest中的setUpClass、tearDownClass、setUp、tearDown方法

from pathlib import Path
import minium


# 初始化类

class BaseCase(minium.MiniTest):
    '''测试用例基类'''

    @classmethod
    def setUpClass(cls):
        super(BaseCase, cls).setUpClass()
        output_dir = Path(cls.CONFIG.outputs)  # 获取outputs
        if not output_dir.is_dir(): # 判断outputs是否是目录
            output_dir.mkdir()

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

    def setUp(self):
        # super(BaseCase, self).setUp()
        pass

    def tearDown(self):
        # super(BaseCase, self).tearDown()
        pass

 4. 编写页面的公共方法: cases-->base-->BasePage.py

# 定义一些公共方法
import time


class BasePage:

    def __init__(self, mini):
        self.mini = mini
        self._build_elements()
        self._build_actions()

    def sleep(self, seconds):
        """延时"""
        time.sleep(seconds)
        return self

    @property
    def current_page(self):
        """ 获取顶层元素 """
        return self.mini.app.get_current_page()

    """ 获取元素 """
    def get_element(self, selector, inner_text=None, text_contains=None, value=None, max_timeout=20):
        return self.mini.app.get_current_page().get_element(selector, inner_text=inner_text,
                                                            text_contains=text_contains,
                                                            value=value, max_timeout=max_timeout)

    """ 获取指定所有元素 """
    def get_elements(self, selector, inner_text=None, max_timeout=20):
        return self.mini.app.get_current_page().get_elements(selector, inner_text=inner_text, max_timeout=max_timeout)

    '''跳转到指定页面'''
    def navigate_to_open(self, route):
        self.mini.app.navigate_to(route)
        return self

    '''跳转到指定页面并关闭当前页面'''
    def redirect_to_open(self, route):
        self.mini.app.redirect_to(route)
        return self

    '''跳转到tabbar页面,关闭其他非tabbar页面'''
    def switch_to_tabbar(self, route):
        self.mini.app.switch_tab(route)
        return self

    '''跳转到非原生tabbar页面'''
    def switch_to_not_tabbar(self, selector, str=None):
        self.mini.page.get_element(selector, inner_text=str).click()
        return self

    @property  # 获取当前路径
    def current_path(self):
        return self.mini.page.path

    def _build_elements(self):
        # 首先用self.__class__将实例变量指向类,然后再去调用Elements类属性
        self.elements = self.__class__.Elements(self)

    def _build_actions(self):
        self.actions = self.__class__.Actions(self)

    class Elements(object):
        """ 页面元素类 """
        def __init__(self, page):
            self.page = page

        def sleep(self, seconds):
            self.page.sleep(seconds)
            return self

    class Actions(object):
        """ 页面动作类 """
        def __init__(self, page):
            self.page = page

        def sleep(self, seconds):
            self.page.sleep(seconds)
            return self

 

5. 编写pages--> pagesclass.py; 封装页面的元素和动作

from cases.base.BasePage import BasePage

# 继承页面的公共方法

class shoppingTrolleyPage(BasePage):

    class Elements(BasePage.Elements): # 继承页面公共方法中的Elements类

        @property
        def lifting(self):   # 每一个元素都定义一个函数
            """ 购物车页面选择配送方式为 自提 """

            text_class = "text#_n_205"
            return self.page.get_element(text_class, inner_text="自提")

    class Actions(BasePage.Actions):  # 继承页面公共方法中的Actions类

        def click_lifting(self):      # 每一个动作都定义一个类
            """ 点击自提 """
            
            # self.page=object; elements(此时是Elements类) 
            self.page.elements.lifting.click()  
            return self

        

6. 编写测试用例 test-->pageclass_test.py

import minium

import route
from cases.base.BaseCase import BaseCase
from pages import pageclass


@minium.ddt_class
class ClassifyPagetest(BaseCase):

    def __init__(self, methodName):
        super(ClassifyPagetest, self).__init__(methodName)
        self.shoppingpath = pageclass.shoppingTrolleyPage(self)  # 调用页面元素和动作


    def test_ClassifyPath(self):
        # 进入购物车
        self.shoppingpath.switch_to_tabbar(route.cartPage).sleep(5)

        # 点击自提
        self.shoppingpath.actions.click_lifting().sleep(2)

7. 终端执行用例

minitest -m test.pageclass_test -c config.json -g  # 单个执行

minitest -s suite.json -c config.json -g   # 执行套件

python -m http.server 12345 -d outputs #  测试报告;浏览器输入 http://localhost:12345 访问

 文章来源地址https://www.toymoban.com/news/detail-484792.html

到了这里,关于小程序自动化之minium的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    本文主要介绍PO模式的测试用例,PO模式优点及层级间的关系,相关配置及运行 minitest的测试小程序和测试case:minitest-demo miniprogram-demo :测试小程序 testcase :测试case,同时也包含文档的测试case testcase-PO :Page Object(PO) 模式的测试case PO模式是自动化测试项目开发实践的最佳设

    2024年02月07日
    浏览(59)
  • 教你如何使用自定义测试(Minium)进行微信小程序自动化测试

    目录 前言: 一、 编写用例 基本操作 处理小程序API 处理小程序原生控件 数据驱动 二、 执行用例 本地执行 云测服务测试 三、 最佳实践 四、总结 前言: 微信小程序自动化测试是保障小程序质量的重要手段,Minium是一个可为微信小程序编写自定义测试的自动化测试框架。它

    2024年02月09日
    浏览(57)
  • 小程序自动化之minium

    本文采用微信开发者工具和minium进行编码 官方文档:小程序云测-MiniTest 1.  python安装minium第三方库,执行minium -v 验证      2. 下载微信开发者工具文档版本 下载链接: 微信开发者工具下载地址与更新日志 | 微信开放文档  3. 设置微信开发者工具 4. 找开发要源代码 1. cases:  测试

    2024年02月09日
    浏览(35)
  • minium-小程序自动化测试框架

    提起 UI 自动化测试,web 端常用 Selenium,手机端常用 Appium,那么很火的微信小程序可以用什么工具来进行自动化测试?本篇将介绍一款专门用于微信小程序的自动化测试工具 - minium。 简介 minium 是为小程序专门开发的自动化框架, 提供了 Python 和 JavaScript 版本。使用 minium 可

    2024年02月22日
    浏览(40)
  • 腾讯出品小程序自动化测试框架【Minium】系列(七)测试框架的设计和开发

    整个框架的开发及调通是在3月27日晚上22点完成,如下: 这篇文章真的是拖了太久了,久到我居然把代码部分完成后,彻底给忘了,这记性,真的是年纪大了! 1、框架搭建设计要素 日志测试步骤 报告失败截图 配置文件数据源设计 公共函数API封装 测试数据参数化、解耦 测

    2023年04月08日
    浏览(40)
  • 微信小程序自动化发布

    文章描述不清 有疑问可以私信 Alison-Bird 参考:https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html 参考:https://www.npmjs.com/package/miniprogram-ci 上传文件 xx.js

    2024年02月07日
    浏览(41)
  • 微信小程序的自动化测试框架

    微信发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS Android 模拟器,三端运行 提供丰富的页面跳转方式,看不到也能去得到 可以获取和设置小程序页面数据,让测试不止点点点 可以直接触发小程序元素绑定事件 支持往 AppSerive

    2024年02月04日
    浏览(48)
  • pyautogui微信小程序自动化操作

    一个很简单的脚本,用途是实现微信小程序或其他软件的自动化操作,如果是长期固定需求,可以考虑把脚本内置到常用软件的环境中,比如MAYA,当我每天打开MAYA时就可以实现每天自动在小程序上疫情打卡 主要使用pyautogui和opencv模块,opencv用于图像识别,pyautogui用于键鼠操

    2024年02月11日
    浏览(48)
  • 微信小程序接口自动化-获取微信code

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 小程序登陆需要在小程序内部调用 wx.login() 的方法拿到 code,然后去请求服务获取到 token,后续的接口才能请求。 如何获取 code 去进行token获取。 Python 使用minium,JS 使用miniprogram-automator,这是微信官方提供的 UI 自动

    2024年02月08日
    浏览(49)
  • 微信小程序自动化测试——微信小程序云测服务!

    MiniTest 微信小程序云测服务是一套由微信测试团队自主研发,联合WeTest云真机能力,共同推出的微信小程序自动化测试服务。 服务基于云真机,支持开发者简单快捷地实现小程序智能化Monkey测试,录制回放,自定义测试和性能分析等能力,并提供详细的测试结果及性能数据,

    2024年04月15日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包