作为一个Game Developer,测试部分是必不可少,程序完成需求首先要进行S0相关的测试,这样确保交付到策划验收和QA验收时是没有阻断性的bug或者显而易见代码缺陷。那么如何去做测试用例呢?肯定不是拿着鼠标,对功能进行点点就行了,尤其是测试即将发布的周版本,这样人力测试其实成本挺高的,如何将人力解放出来,那么自动化测试就是解决这种问题的,针对每个功能模块写好测试用例,直接跑测试用例就可以了。

Q:Airtest是什么玩意?

A:Airtest Project是网易游戏内部工具团队开发并开源的一款UI自动化测试工具,据说曾经获得谷歌力挺。

Q:Airtest支持哪些测试?

A:脚本录制测试,基于图形图像识别,写测试用例测试(python脚本)

Q:Airtest使用起来简单吗?

A:零门槛,入门只要5分钟,接下来,教你一步步搭建

如何搭建Airtest自动化测试环境

1,安装Python环境,安装后将python加入环境变量

2,安装pip(到python.exe文件目录下执行Python setup.py install)

3,安装poco(pip install poco)

4,安装pocoui(pip install pocoui)

5,安装pip install opencv-contrib-python==3.2.0.7 如果失败先执行卸载pip uninstall opencv-contrib-python然后再重新执行安装,如果pip版本过低可以升级:pip install opencv-contrib-python也可不升级直接执行安装

 

到这一步,表示已安装成功了!

6,安装airtest: pip install airtest

7,下载AirtestIDE,直接解压双击兼容模式启动.bat即可运行,下载地址:http://airtest.netease.com/

好了,到此测试环境已经搭建完成!启动下,看看Airtest IDE的界面

好了,接下来我们来一起学习如何使用这个IDE,我们要对接的Unity自动化测试,那么请移步这里:https://poco.readthedocs.io/en/latest/source/doc/integration.html#unity3d

只需要4步就搞定Poco SDK 的接入,那么接下来我们新建一个简单的Unity工程,将SDK放入工程下,搭建一个简易的界面,

怎样使用Poco呢?只需要在GameObject处于Active的实例下挂载PocoManager.cs即可。

那么运行游戏,你会发现Poco开启了一个服务端口,这个服务是干什么的,可以提供[RPC]函数的远程调用,主要功能是dump场景中的Unity层次试图下的节点的。

Airtest 如何和Unity协同使用呢?

在Editor模式下只需要把Game窗口嵌入到Airtest IDE即可,来看下怎么内嵌到IDE中,很简单的,点击选定窗口,款选Game视图即可。

来了,老弟,内嵌Airtest IDE成功

获取unity下的层次试图:

在Poco辅助框选择项目开发引擎Unity即可,支持Unity,UE,Cocos,Android原生,iOS原生开发,QT等。层次试图下的节点已经获取了,我该怎么和UI交互呢,别着急,他来了,下面就是

# -*- encoding=utf8 -*-
__author__ = "acer" from airtest.core.api import *
from airtest.cli.parser import cli_setup
from poco.drivers.unity3d import UnityPoco if not cli_setup():
auto_setup(__file__, logdir="G:/ATest/PocoUnity/log", devices=[
"Windows:///2360856",
], project_root="G:/ATest/PocoUnity") # focus_rect:[左边框宽度,上边框宽度,右边框宽度,下边框宽度]
device().focus_rect = [, , ,] # script content
print("start...") poco = UnityPoco()
class pUnit:
def __init__(self,_btn):
#print("init")
self.btn = _btn
'''单次点击调用'''
def testBtnClick(self):
self.btn.click() '''重复点击调用'''
def testBtnRepeatedClick(self):
count =
while True:
self.btn.click()
time.sleep(1.0)
count +=
if count > :
break
print("count:",count) print('输入账号,密码,模拟登录...')
poco("ipt_user").set_text('wuzhang')
poco("ipt_passwd").set_text('')
assert poco("btn_login").child("Text").get_text() == "登录", "Login"
poco("btn_login").click()
time.sleep() print(poco("tips").get_text()) btn_start = poco("btn_start")
if btn_start.exists():
x = pUnit(btn_start)
x.testBtnClick()
x.testBtnRepeatedClick()
print("over")

那我们运行下看下效果,有点迫不及待了,内心也有点小激动了......

如果不想写代码,可是录制脚本,然后就能按照我们录制的脚本运行,这个比较简单,此处不再演示了,下面你关心的可能是真机测试了,真机测试也很简单使用数据线连接你的手机在开发者模式中打开允许调试,在IDE上点击刷新ADB,其实就是执行了:adb devices,然后就看到了我的手机,点击connect即连上了我们的安卓设备。

连上手机了,手机下运行和编辑器一致,这里就不再上传截图了,到此简单的环境搭建和测试已经OK了,如果有更多的需求比如拖拽,滑动Scrollview等复杂点的交互可以查询官方提供的demo和API,这只是一个简易的自动化环境测试,我们可以自己写一个自动启动app,逐个调用各个模块的测试用例,比如:登录模块,点金玩家玩家头像获取信息,定时做任务等等。

参考资料:

http://airtest.netease.com/changelog.html

http://airtest.netease.com/tutorial/Tutorial.html

https://poco.readthedocs.io/en/latest/source/doc/integration.html#unity3d

Airtest,Poco,Unity自动化测试集成的更多相关文章

  1. 5分钟上手自动化测试——Airtest+Poco快速上手

    版权声明:该文章为AirtestProject原创文章:允许转载,但转载必须注明“转载”并保留原链接 前言 本文档将演示使用`AirtestProject`专用的编辑器AirtestIDE,编写`Ai ...

  2. 使用Airtest进行UI自动化测试

    一.环境搭建 1.Airtest客户端下载 访问官网http://airtest.netease.com/,根据自己的系统下载相应的客户端安装: 2.python工具下载与环境搭建 在本地python ...

  3. Unity 下集成第三方原生 SDK,以极光厂商通道为例

    Unity中集成三方SDK有两种方式: Unity 项目开发中时常有集成 Android 第三方 SDK 的需求,比如接入第三方推送,分享等功能.而第三方 SDK 的集成文档提到的往往是基于原生 An ...

  4. 关于基于python2.7的unity自动化测试框架GAutomator测试环境的搭建(源码网盘下载地址:https://pan.baidu.com/s/1c2TXwtU)

    关于基于python 2.7的unity自动化测试框架GAutomator测试环境的搭建 百度云盘链接(思维图学习资料):https://pan.baidu.com/s/1dFWExMD 准备工作(具 ...

  5. Airtest ——poco

    1.  Pymysql(No module named ‘cryptography’) pip install cryptography pip install paramiko 把 cryptogr ...

  6. unity android 集成指南

    原地址:http://blog.csdn.net/alking_sun/article/details/36175187 1.安卓层开发并暴露接口.   launcher activity(以下称为U ...

  7. linux+jenkins+python+svn 自动化测试集成之路

    本文背景: 背景1---个人基础: 本机win7上安装pycharm,使用python搭建API自动化测试框架,本地运行Pass.本机上搭建jenkins,创建测试任务,定时构建Pass. 背景2-- ...

  8. airtest+poco多脚本、多设备批处理运行测试用例自动生成测试报告

    一:主要内容 框架功能及测试报告效果 airtest安装.环境搭建 框架搭建.框架运行说明 airtest自动化脚本编写注意事项 二:框架功能及测试报告效果 1. 框架功能: 该框架笔者用来作为公司的 ...

  9. unity, iOS集成微信

    将微信sdk直接拖进xcode会导致Library Search Paths是错的,需要手动改成如下样子(蓝色选中部分)才能通过编译:

随机推荐

  1. python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案

    人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包.但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很影响自己的工作进度,这里给出一个pip快速安装工具包的办法, ...

  2. LINQ之路 7:子查询、创建策略和数据转换(要点笔记)

    匿名类型 上面我们自己定义了类型TempProjectionItem来存放查询的结果.通过使用匿名类型,我们可以省去这种中间类型的定义,而由编译器来帮我们完成: select item.Origina ...

  3. centos7 开机/etc/rc.local 不执行的问题(转载)

    最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了 #!/bin/bash # THIS FILE IS ADDE ...

  4. http,tcp,udp的报文格式

    http请求报文与响应报文:https://blog.csdn.net/qq_26565861/article/details/80969960 tcp与udp报文:https://www.cnblo ...

  5. SpringBoot + JPA + mariadb

    SpringBoot + JPA + MariaDB 源码:https://github.com/ldl326308/LiveGreen-SpringBoot.git JPA持久层方法名命名规则:

  6. 用缓冲技术OSCache 提高JSP应用的性能和稳定性

    一.概述 在Web应用中,有些报表的生成可能需要数据库花很长时间才能计算出来:有的网站提供天气信息,它需要访问远程服务器进行SOAP调用才能得到温度信息.所有这一切都属于复杂信息的例子.在Web页面中 ...

  7. 关于JS对象原型prototype与继承,ES6的class和extends · kesheng's personal blog

    传统方式:通过function关键字来定义一个对象类型 1234567891011 function People(name) { this.name = name}People.prototype. ...

  8. C++如何保留2位小数输出

    cout<<setiosflags(ios::);//需要头文件#include <iomanip> 然后再输出实数类型变量即可以保留2位小数输出了,当然你要保留三位小数,se ...

  9. Jmeter之Beanshell---使用Java处理JSON块

    原文出处:https://www.cnblogs.com/xpp142857/p/7374281.html [环境] ①Jmeter版本:3.1,JDK:1.7 ②前置条件:将json.jar包置于. ...

  10. a链接刷新页面与js刷新页面总结

    1.a链接的使用操作: <a href="javascript:history.go(-1);">返回上一页</a> <a href="#t ...