网易开源的airtest库,本身上是一个python第三方库,而他的airtestIDE则是一个强大的集成工具。
在笔者的另一个角度看来,随着airtest出来的完善的使用文档,对我们这种小白来说更有意义。
https://www.jianshu.com/p/e62d3640c07c
先介绍三者:
1、airtest是最近流行的游戏UI测试框架,通过图像识别进行点击,断言图片是否存在等达到自动化的目的。兼容Ios,Android平台。
2、unittest则是python的单元测试框架,类似于java的junit。
3、beautifulreport则是专门为unitest搞的html测试报告了。
准备工作:
1、克隆beautifulreport项目,github这里很详细地写了
https://github.com/TesterlifeRaymond/BeautifulReport
2、准备python环境,并导入airtest库,安装还是看官方
https://github.com/AirtestProject/Airtest
4、贴下我写的用例。(PS,运行这条用例前,务必连接手机开启开发者模式,adb连接正常。可以用adb devices检查下)
# -*- encoding=utf8 -*-
__author__ = "guozehui"
from airtest.core.api import *
import unittest
from BeautifulReport import BeautifulReport
import os
auto_setup(__file__)
class WTestcase(unittest.TestCase):
img_path = 'img'
def save_img(self, img_name):
"""
传入一个img_name, 并存储到默认的文件路径下
:param img_name:
:return:
"""
snapshot(('{}/{}.png'.format(os.path.abspath(self.img_path), img_name)))
@classmethod
def setUpClass(cls):
# 参数你是你连接手机后,通过adb devices可以看到的那串东西
init_device("Android", "CLB7N18814003069")
def setUp(self):
# 安装电脑的apk包到手机上
install("F:/game/你的包.apk")
start_app("com.你的游戏包名")
sleep(2.0)
@BeautifulReport.add_test_img('健康公告存在')
def test_demo(self):
"""启动测试"""
touch(Template(r"tpl1561020321733.png", record_pos=(-0.17, 0.109), resolution=(2244, 1080)))
assert_exists(Template(r"tpl1561020429302.png", record_pos=(0.003, -0.012), resolution=(2244, 1080)), "健康公告存在")
self.save_img('健康公告存在')
def tearDown(self):
home()
@classmethod
def tearDownClass(cls):
stop_app("com.你的游戏包名")
uninstall("com.你的游戏包名")
if __name__ == '__main__':
unittest.main()
5、最后就是生成报告了,在下面文件夹下运行“python sample.py”
按照步骤1,你应该把beautifulreport项目复制到了你运行python环境的,site-packages目录下了。打开这个目录,再编辑下sample.py文件
"""
@Version: 1.0
@Project: BeautyReport
@Author: Raymond
@Data: 2017/11/17 下午3:48
@File: sample.py
@License: MIT
"""
import unittest
from BeautifulReport import BeautifulReport
if __name__ == '__main__':
# 差点忘记说了,用例的py文件一定要用test开头,或者你改下面的匹配值
test_suite = unittest.defaultTestLoader.discover('F:/code/你存放代码的文件夹', pattern='test*.py')
result = BeautifulReport(test_suite)
result.report(filename='测试报告', description='启动测试', log_path='.')
嗯,就是这样完成了。---------------------------------------------------------------------------------------------------------------------------------------
啰嗦一下
python的优点就是拥有丰富的第三方库,前提是你要去找,所以大家可以多关注一下github大神们的提交。
像作者这样只是想弄个demo看下测试报告效果,自动化测试是一个工程,要想持续弄下去,需要要把所有用例规范起来,所以要想下怎么设计这个工程的目录结构。
之前提到的这位参考作者,有写自己的目录结构的,大家可以再想下自己的需要怎么弄。
https://www.jianshu.com/p/e62d3640c07c