Minium-小程序自動化測試框架

1、前言
提起 UI 自動化測試,web 端常用 Selenium,手機端常用 Appium,那么很火的微信小程序可以用什么工具來進行自動化測試?本篇將介紹一款專門用于微信小程序的自動化測試工具 - minium。
2、簡介
minium 是為小程序專門開發(fā)的自動化框架, 提供了 Python 和 JavaScript 版本。使用 minium 可以進行小程序 UI 自動化測試, 但是 minium 的功能不止于僅僅是 UI 自動化, 甚至可以使用 minium 來進行函數(shù)的 mock, 可以直接跳轉到小程序某個頁面并設置頁面數(shù)據(jù), 做針對性的全面測試。
特性:
- 支持一套腳本,iOS & Android & 模擬器,三端運行
 - 提供豐富的頁面跳轉方式,看不到也能去得到
 - 可以獲取和設置小程序頁面數(shù)據(jù),讓測試不止點點點
 - 可以直接觸發(fā)小程序元素綁定事件
 - 支持往 AppSerive 注入代碼片段
 - 可以調用部分 wx 對象上的接口
 
官方文檔:
https://run-noob.github.io/minium-doc-github/#/minium/Python/readme.
3、安裝
環(huán)境要求(Python 版本):
Python 3.x
微信公共庫版本 >= 2.7.3
安裝 穩(wěn)定版微信開發(fā)者工具
如果要測 Android,下載 微信測試包
安裝:
微信開發(fā)者工具-設置-安全設置,開啟安全模式。

安裝 minium.
pip install minium快速上手.
使用開發(fā)者工具的命令行工具,輸入命令打開測試小程序。
/Applications/wechatwebdevtools.app/Contents/MacOS/cli --auto /Users/wangmeng/WeChatProjects/testdemo --auto-port 9420注:
這里的 --auto-port 填寫 9420,不是開發(fā)者工具安全模式的端口。
確保開發(fā)者工具登錄的微信號具備被測小程序的開發(fā)者權限。
/Applications/wechatwebdevtools.app/Contents/MacOS/cli 命令行工具所在位置。
Mac: <安裝路徑>/Contents/MacOS/cli
Windows: <安裝路徑>/cli.bat
/Users/wangmeng/WeChatProjects/testdemo 小程序工程的路徑(例如官方的小程序示例)。
輸入后,成功打開對應的小程序。

命令行輸出:Open project with automation enabled success,表示成功。

確認開發(fā)者工具調試基礎庫版本 >= 2.7.3。

打開 IDE,如 PyCharm,創(chuàng)建示例代碼。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試
import minium
mini = minium.Minium()
system_info = mini.get_system_info()
print(system_info)執(zhí)行結果,成功打印出系統(tǒng)信息。

如果想在手機上運行腳本,可以點擊開發(fā)者工具的真機調試,連接成功后,再次運行腳本,腳本就會在手機上面運行。

連接成功。

再次執(zhí)行后,可以看到打印出的是手機上的系統(tǒng)信息。

測試框架.
minium 提供一個基于 unittest 封裝好的測試框架。
測試基類 MiniTest 會根據(jù)測試配置進行測試,minitest 向上繼承了 unittest.TestBase。
示例代碼,2條用例,每條用例都加上了斷言。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試
import minium
import time
class MyTest(minium.MiniTest):
    def test_view(self):
        self.page.get_element("view", inner_text="視圖容器").click()
        self.page.get_element(".navigator-text", inner_text="swiper").click()
        self.page.get_elements("switch")[0].click()
        self.page.get_elements("switch")[1].click()
        assertValue1 = self.page.get_element(".weui-cell__bd").text
        self.assertEqual("指示點", assertValue1)
        time.sleep(0.5)
        self.app.navigate_back()
    def test_form(self):
        self.page.get_element("view", inner_text="表單組件").click()
        self.page.get_element(".navigator-text", inner_text="textarea").click()
        self.page.get_element("page > view > view > view:nth-child(1) > view.textarea-wrp > textarea").click()
        self.page.get_element("page > view > view > view:nth-child(1) > view.textarea-wrp > textarea").input("小程序自動化測試")
        assertValue2 = self.page.get_element("page > view > view > view:nth-child(1) > view.textarea-wrp > textarea").text
        self.assertIn("小程序", assertValue2)
        time.sleep(0.5)
        self.app.navigate_back()執(zhí)行結果,2條用例執(zhí)行成功。

自動生成 outputs 目錄,將測試數(shù)據(jù)輸出到 outputs 目錄里,里面包含一個簡易的測試報告。

打開命令行,跳轉到腳本項目目錄里,輸入:
python -m http.server 8080 -d outputs在瀏覽器中輸入 http://localhost:8080/ 可以查看測試報告。

執(zhí)行日志。

如果不想在 IDE 上運行,只想在命令行上運行用例。
在項目的根目錄上創(chuàng)建 suite.json 文件。
文件內容:
{
    "pkg_list": [
        {
            "pkg": "case.*",
            "case_list": [
                "test_*"
            ]
        }
    ]
}項目結構,case 目錄存放測試用例。

打開命令行,跳轉到腳本項目目錄里(testdemo123 編寫的腳本項目),輸入:
miniruntest -s suite.json加載用例開始執(zhí)行。

如果想在手機上運行腳本(如 Android),只需要在用例目錄下創(chuàng)建 config.json 配置文件即可。
{
    "debug_mode": "info",
    "enable_app_log": false,
    "platform": "Android"
}然后連接手機,并且保證 adb devices 能夠識別到手機,之后命令行輸入執(zhí)行命令就可以了。















 
 
 







 
 
 
 