一舵鳞、minium框架的簡(jiǎn)介
minium 是為小程序?qū)iT開(kāi)發(fā)的自動(dòng)化框架怀挠,通過(guò)config 管理運(yùn)行設(shè)備埃唯,通過(guò)suite方式管理用例
二撩匕、項(xiàng)目目錄結(jié)構(gòu)
- case/base/:頁(yè)面公共方法以及頁(yè)面路徑
- case/locators: 頁(yè)面節(jié)點(diǎn)
- case/pages/: 頁(yè)面對(duì)象模型
- outputs/: 測(cè)試報(bào)告
- test_my/:測(cè)試腳本
- config.josn: 配置文件
- sutie.json:管理測(cè)試用例文件
三、元素定位及頁(yè)面操作
- minium.Minium: Minium 負(fù)責(zé)初始化整個(gè)自動(dòng)化框架墨叛,提供了Driver的啟動(dòng)接口止毕,以及測(cè)試結(jié)束之后回收資源能力
- minium.App: App提供小程序應(yīng)用層面的各種操作,包括頁(yè)面跳轉(zhuǎn)漠趁,獲取當(dāng)前頁(yè)面扁凛,頁(yè)面棧等功能
- minium.Page: Page提供了小程序頁(yè)面內(nèi)包括set data,獲取控件,頁(yè)面滾動(dòng)等功能
- minium.BaseElement: Element提供了頁(yè)面元素空間進(jìn)行操作闯传,以及在控件內(nèi)查找子控件的能力
- minium.Native: 提供了針對(duì)小程序內(nèi)涉及原生控件的操作封裝
四谨朝、Page Object 模式
1、Page Object 采用分層封裝的設(shè)計(jì)思想甥绿,不同層關(guān)心不同的問(wèn)題字币。
2、頁(yè)面對(duì)象層只關(guān)心元素定位問(wèn)題共缕,測(cè)試用例只關(guān)心測(cè)試的數(shù)據(jù)。
3翩活、通過(guò)對(duì)界面元素和功能模塊的封裝減少冗余代碼嫉沽,在后期維護(hù)中魂毁,若元素定位或功能模塊發(fā)生變化咬崔,只需要調(diào)整頁(yè)面元素或功能模塊封裝的代碼垮斯,顯著提高測(cè)試用例的可維護(hù)性。
五、斷言
在測(cè)試用例中,執(zhí)行完測(cè)試用例后,判斷測(cè)試結(jié)果是PASS還是Fail
六购对、運(yùn)行測(cè)試用例
1、運(yùn)行單個(gè)用例生成測(cè)試報(bào)告命令:test.first_test 為單個(gè)用例名稱
minitest -m test.first_test -c config.json -g
2、測(cè)試計(jì)劃 suite.json霜定,通過(guò)suite可以跑多個(gè)測(cè)試用例,測(cè)試用例命名必須包含test
suite.json的pkg_list字段說(shuō)明要執(zhí)行用例的內(nèi)容和順序缘回,pkg_list是一個(gè)數(shù)組,每個(gè)數(shù)組元素是一個(gè)匹配規(guī)則,會(huì)根據(jù)pkg去匹配包名酥宴,找到測(cè)試類揩环,然后再根據(jù)case_list里面的規(guī)則去查找測(cè)試類的測(cè)試用例》牵可以根據(jù)需要編寫匹配的粒度丰滑。注意匹配規(guī)則不是正則表達(dá)式,而是通配符倒庵。
{
"pkg_list": [
{
"case_list": [
"test_*"
],
"pkg": "*_test"
}
]
}
執(zhí)行命令
minitest -s suite.json -c config.json -g
七褒墨、測(cè)試報(bào)告:
測(cè)試結(jié)果存儲(chǔ)在outputs下,運(yùn)行命令python3 -m http.server 12345 -d outputs然后在瀏覽器上訪問(wèn)http://localhost:12345即可查看報(bào)告擎宝,如圖:
或者直接通過(guò)命令minitest -s suite.json -c config.json -g也可以生產(chǎn)郁妈,通過(guò)右鍵-選擇瀏覽器打開(kāi)html報(bào)告
測(cè)試報(bào)告內(nèi)容:
- 測(cè)試用例運(yùn)行時(shí)間、開(kāi)始時(shí)間绍申、結(jié)束時(shí)間噩咪、總耗時(shí)、單個(gè)用例耗時(shí)
- 測(cè)試用例case數(shù)极阅、通過(guò)胃碾、失敗、case異常筋搏、通過(guò)率
- 執(zhí)行環(huán)境
- 運(yùn)行信息
- 用例說(shuō)明
- 運(yùn)行截圖
- 代碼和堆棧
- 運(yùn)行日志
- 小程序日志
八仆百、定時(shí)跑自動(dòng)化項(xiàng)目:
1、創(chuàng)建run.sh文件
2奔脐、項(xiàng)目里面創(chuàng)建run.py文件俄周,設(shè)定時(shí)間定時(shí)跑項(xiàng)目
import os
import datetime
class CheckService(object):
def __init__(self):
pass
def timerFun(self, sched_Timer):
flag = 0
while True:
now = datetime.datetime.now()
if now == sched_Timer:
os.system('/Users/macbookair/Desktop/p8care/run/run.sh')
flag = 1
else:
if flag == 1:
# 把hours = 1,改成minutes = 1,就變成了每個(gè)小時(shí)定時(shí)任務(wù),改成days = 1
# 就變成每天的定時(shí)任務(wù)
sched_Timer = sched_Timer + datetime.timedelta(days=1)
print('run the timer task at {0}'.format(sched_Timer))
flag = 0
if __name__ == "__main__":
cs = CheckService()
# 每天10點(diǎn)0分會(huì)執(zhí)行任務(wù)
sched_Timer = datetime.datetime(2022, 8, 2, 13, 45)
print('run the timer task at {0}'.format(sched_Timer))
cs.timerFun(sched_Timer)
九髓迎、參考文檔:
1峦朗、minium文檔:https://minitest.weixin.qq.com/#/minium/Python/readme
2、定時(shí)任務(wù)文檔:
https://developer.aliyun.com/article/642819
https://www.cnblogs.com/royfans/p/7232881.html