新入职的一家公司,公司技术栈都是 js 系的,然后分的任务是做小程序 ui 自动化测试,其实是想用 python 的 minium 库的(微信官方开源),文档地址,我将文档部署到了自己的服务器(http://49.232.203.244:3000/#/minium/Python/readmeminiprogram-automator),但是遇到个坑被拦在了最开始,所以还是考虑用(https://developers.weixin.qq.com/miniprogram/dev/devtools/auto/),但是现在没有 具体的思路就目前来说应该能实现一些线性脚本的测试用例,不知道各位有什么好的解决方案,
放两张报告图吧:
刚领导来问我决定用哪个工具了吗,其实我想如果上面问题解决了还是用 minium 合适,毕竟报告漂亮点
现在可以了 之前应该是版本库没选择对,必须要有这个
说说遇到的新问题:根据文档中配置了config.json
配置文件后无法直接唤起微信开发者工具,导致出现了超时的错误
{
"debug_mode": "debug",
"enable_app_log": true,
"project_path": "C:\\Users\\zy7y\\Desktop\\miniprogram-demo",
"dev_tool_path": "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli",
"platform": "ide",
"app": "wx",
"close_ide": false,
"full_reset": false,
"test_port": 9420,
"assert_capture": true,
"use_push": true,
"auto_relaunch": true,
"remote_connect_timeout": 10,
"request_time": 30
}
测试代码及错误截图如下:
请各位如果遇到过能帮下忙
上面问题 是因为用了 miniTest 通过命令行来启动所以不行~~,可实际这是官方示例提供的方式之一,同情况下使用 pycharm 下 unittest 方式运行 是无问题的,本来是想 通过 miniTest -s suite.json -g 直接运行并生成测试报告,由于这个问题暂时解决不了,然后就找了段 unittest 的代码来实现 多个文件运行 (非异步哈:miniTest 基于 UnitTest 开发的),
import os
import time
import unittest
if __name__ == '__main__':
# 测试用例目录
test_dir = r"C:\Users\zy7y\Desktop\miniprogram-demo-test"
# 加载测试用例
discover = unittest.defaultTestLoader.discover(test_dir, '*test.py') # 返回值是一个测试套件
runner = unittest.TextTestRunner(verbosity=2)
runner.run(discover)
time.sleep(3)
# 输出测试报告
os.system('minireport outputs report')
time.sleep(2)
# 启动本地服务,并映射报告文件
os.system('python -m http.server 8080 -d report')
个人不是很熟悉这些用法,这段代码原文出处来自(自己加了生成报告并映射服务):http://www.mamicode.com/info-detail-2923324.html
当然这些都是跑得 实例代码,然后报的错误也不是很懂,路还很长~~
现在在哪里工作呢
我之前用过这个工具,但是小程序内部的控件定位不到
现在的问题:1.原生控件无法操作,2.自动化时候在一个页面列表数据不知道是否可选(有的数据有状态了 就不能操作,没有就操作他),3.上传文件
今天找了篇帖子,也是按照上面的方法成功的使用了 minium 的一个 mock 方法绕过 微信原生 modal 无法操作的问题:https://developers.weixin.qq.com/community/develop/doc/000e86d66e853009b729a312f51c00?highLine=minium
目前完成了 一个业务角色的某条流程线自动化脚本,因为能力不够 很乱,然后 300 行代码都在一个文件里,领导希望先把这个业务角色的自动化脚本用起来,正在慢慢试错,用命令行启动步骤:
# 1. D:\tools\微信 web 开发者工具\cli.bat auto --project D:\work\xcx\dist --auto-port 9420
需要先启动了微信开发者工具
然后执行下面命令 first_test 是文件名称 -g 代表生成测试报告
# 2. miniruntest -m first_test -g # 有个弊端,需要保证微信开发者工具已启动
后续优化。代码数据分离,优化断言处,元素分离。。。,多数据处理
目前在尝试实现 po 模式,其中将 case 分到了 testcase 目录下,遇到个坑的点,minium 默认加载的配置文件是必须要和执行的 case 在同一个目录,解决方法:修改 minium 下 - 源码文件assertbase.py
如下
更推荐这种方法,直接命令运行测试 指定 config.json 文件路径
老哥,最近也在研究这个框架,想做小程序自动化,有什么心得或传授一下
appium 可行么?只要能定位到元素就能驱动,我上次试过 android 小程序能定位到元素,不过没时间去搞了
需要有小程序的开发者权限,然后拿到源代码,我使用的是微信 web 开发者工具,没有上真机,整体使用参考 webUI/appUI 自动化,但是官方目前没有提供上传文件的方法,而且操作微信 mobal 弹窗这些只能用 mock 来实现,https://developers.weixin.qq.com/community/develop/doc/000e86d66e853009b729a312f51c00?highLine=minium, 使用过程中多去这个地址找答案吧
个人没使用过 appium,不过应该是可行的,appium 就不需要小程序的源码了,方法也更多,不过之前查了一手好像需要用什么工具来查看定位元素,貌似还不是那么容易用起来,有小程序源码就可以用微信开发者工具,上面直接就定位了,操作起来和 web 没什么区别
如果对执行效率有要求可以直接使用微信开发者提供的小程序自动化 api 差不多的,可以集成 jest + allure ,这边有个集成 puppeteer 的 可以参考下,当然也参考了前辈的代码 https://github.com/zy7y/jap