使用场景:功能回归测试、list清单检查或者单元测试场景
airtest脚本
1、poco控件
2、图片识别
区别在于:
- 用poco控件编写的脚本容错率较低,兼容性更强,更适合跑兼容性测试,但需要项目接入poco-sdk
- 用图片识别编写的脚本容错率较高,兼容性较弱,没有代码权限无法尝试接入poco-sdk时可以选择此方式
结合unittest单元测试框架和HTMLTestRunner
测试报告模板使用HTMLTestRunner
另外在此模板的基础上,添加了截图显示,在报告中点击缩略图会跳转显示原图
脚本内需要导入(使用poco需要另外导入相应模块):
# airtest模块
from airtest.core.api import *
# unittest是python的单元测试框架
import unittest
# HTMLTestRunnerCN是专门为unitest搞的html测试报告
import HTMLTestRunnerCN
setUp()
方法用于测试用例执行前的初始化工作。
如测试用例中需要访问数据库,可以在setUp中建立数据库连接并进行初始化。如测试用例需要登录web,可以先实例化浏览器
在这里我主要是用于移动端测试,所以在setUp中建立手机连接
def setUp(self):
auto_setup(__file__, logdir=True, devices=[
f"android://127.0.0.1:5037/{devices}?cap_method=javacap&touch_method=adb",
])
生成测试报告
# 获取当前时间,这样便于下面的使用。
now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) + '.html'
# filePath:测试报告保存的路径
filePath = os.path.join(os.getcwd(), 'report', now)
fp = open(filePath, 'wb')
# 测试报告的title、描述
runner = HTMLTestRunnerCN.HTMLTestReportCN(stream=fp,
title='自动化回归测试报告',
description='',
tester='屈闯'
)
runner.run(suite)
# 最后记着关闭文件
fp.close()
报告展示
其他问题
使用图片识别写脚本,可以正常运行,但是报告中会显示报错
error: (-213:The function/feature is not implemented)
This algorithm is patented and is excluded in this configuration;
Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'cv::xfeatures2d::SURF::create'
谷歌一下,发现是sift算法已经申请专利,开源OpenCV没有版权,新的OpenCV去掉了这个算法
解决方法:
1.卸载已安装的高版本
pip uninstall opencv-python
pip uninstall opencv-contrib-python
2.安装低版本
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python==3.4.2.16
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python==3.4.2.16
完美解决