一、minium框架的简介
minium 是为小程序专门开发的自动化框架,通过config 管理运行设备,通过suite方式管理用例
二、项目目录结构
![](https://img.haomeiwen.com/i4904908/1f01a8bc8953bbeb.jpeg)
- case/base/:页面公共方法以及页面路径
- case/locators: 页面节点
- case/pages/: 页面对象模型
- outputs/: 测试报告
- test_my/:测试脚本
- config.josn: 配置文件
- sutie.json:管理测试用例文件
三、元素定位及页面操作
![](https://img.haomeiwen.com/i4904908/e074023f6fbb9941.png)
- minium.Minium: Minium 负责初始化整个自动化框架,提供了Driver的启动接口,以及测试结束之后回收资源能力
- minium.App: App提供小程序应用层面的各种操作,包括页面跳转,获取当前页面,页面栈等功能
- minium.Page: Page提供了小程序页面内包括set data,获取控件,页面滚动等功能
- minium.BaseElement: Element提供了页面元素空间进行操作,以及在控件内查找子控件的能力
- minium.Native: 提供了针对小程序内涉及原生控件的操作封装
四、Page Object 模式
1、Page Object 采用分层封装的设计思想,不同层关心不同的问题。
2、页面对象层只关心元素定位问题,测试用例只关心测试的数据。
3、通过对界面元素和功能模块的封装减少冗余代码,在后期维护中,若元素定位或功能模块发生变化,只需要调整页面元素或功能模块封装的代码,显著提高测试用例的可维护性。
五、断言
在测试用例中,执行完测试用例后,判断测试结果是PASS还是Fail
![](https://img.haomeiwen.com/i4904908/b897c49184fc15f4.png)
六、运行测试用例
1、运行单个用例生成测试报告命令:test.first_test 为单个用例名称
minitest -m test.first_test -c config.json -g
2、测试计划 suite.json,通过suite可以跑多个测试用例,测试用例命名必须包含test
suite.json的pkg_list字段说明要执行用例的内容和顺序,pkg_list是一个数组,每个数组元素是一个匹配规则,会根据pkg去匹配包名,找到测试类,然后再根据case_list里面的规则去查找测试类的测试用例。可以根据需要编写匹配的粒度。注意匹配规则不是正则表达式,而是通配符。
{
"pkg_list": [
{
"case_list": [
"test_*"
],
"pkg": "*_test"
}
]
}
执行命令
minitest -s suite.json -c config.json -g
七、测试报告:
测试结果存储在outputs下,运行命令python3 -m http.server 12345 -d outputs然后在浏览器上访问http://localhost:12345即可查看报告,如图:
或者直接通过命令minitest -s suite.json -c config.json -g也可以生产,通过右键-选择浏览器打开html报告
![](https://img.haomeiwen.com/i4904908/17b5af925480f073.png)
测试报告内容:
- 测试用例运行时间、开始时间、结束时间、总耗时、单个用例耗时
- 测试用例case数、通过、失败、case异常、通过率
- 执行环境
- 运行信息
- 用例说明
- 运行截图
- 代码和堆栈
- 运行日志
- 小程序日志
八、定时跑自动化项目:
1、创建run.sh文件
![](https://img.haomeiwen.com/i4904908/0a6affca7656f165.jpg)
2、项目里面创建run.py文件,设定时间定时跑项目
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,就变成了每个小时定时任务,改成days = 1
# 就变成每天的定时任务
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点0分会执行任务
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、定时任务文档:
https://developer.aliyun.com/article/642819
https://www.cnblogs.com/royfans/p/7232881.html
网友评论