移动端自动化openatx开源项目介绍,pytest并发测试框架结合
开头
相信不少用过appium的同学,对于使用appium的一些体会与感受是否与我相似
1. appium启动服务和app程序非常慢
2. appium多线程并发需要启动多个服务
3. appium必须连接usb线进行自动化测试
所以在Testerhome这个共享氛围很好,也有不少大牛的论坛上爬文章,发现了openatx这个开源项目,直接截图github的README介绍一下项目情况
github地址:https://github.com/openatx
有兴趣的同学可以去为开源项目添砖加瓦
总结一下atx:
1. 快速启动和操作手机端
2. 基于atx-agent的http协议,通过接口调用手机上的二进制atx程序去进行手机操作,实现WiFi无线连接
3. codeskyblue还搭建了atx-server集群管理,目前在用Python重写atxserver2,将支持跨网域连接设备和一些结构优化
4. 因无需启动多appium服务,只是通过http接口发送命令,支持大量终端同步并发操作
ATX介绍
atx架构图
安装
适用范围
Android手机 4.3+(sdk 18)
命令行CMD或Pycharm自己的venv环境中
pip install -U --pre uiautomator2
然后等待安装成功
初始化设备
手机连接上usb,运行初始化命令
python -m uiautomator2 init
如有atx-server设备集群管理,则可
python -m uiautomator2 init --server ip:port
ip和port为atx-server相应ip和端口
等待初始化成功即可。
基本操作
连接设备和操作
# coding: utf-8
import uiautomator2 as u2 u = u2.connect_usb()
或
u = u2.connect(ip)
driver = u.session("cn.vsx.vc") driver(className="android.widget.Button", resourceId="cn.vsx.vc:id/ptt").long_click(duration=2, timeout=10)
assert driver(resourceId="cn.vsx.vc:id/ptt", text="按住 说话").exists
剩下的控制操作可参考官方文档: https://github.com/openatx/uiautomator2
结合Pytest单元测试框架与并发
思路:
之前的文章介绍过pytest单元测试框架如何进行并发,此处可以重复一下:
通过CMD命令启动pytest的时候,代入并发所需要的参数即可:
pytest.main(["../TestCases/", f"--cmdopt={Phone['ip']}", "--alluredir"])
在测试用例目录下的conftest加入cmdopt参数代入方法
def pytest_addoption(parser): # 定义命令行传参参数
parser.addoption("--cmdopt", action="store", default="device", help="None") @pytest.fixture(scope="session") # 命令行参数传递给pytest
def cmdopt(request):
return request.config.getoption("--cmdopt") @pytest.fixture(scope="session") # 初始化开始连接设备
def connectDevice(cmdopt):
address = cmdopt
d = u2.connect(addr=address)
d.set_fastinput_ime(True)
driver = d.session("cn.vsx.vc")
yield driver
print("driver finished")
driver.close()
然后通过concurrent.future的多线程ProcessPoolExcutor 去并发启动包含pytest.main的方法
def runnerPool(deviceIP_list): # 启动多进程运行测试
with ProcessPoolExecutor(len(getDevices())) as pool:
pool.map(runPytest, deviceIP_list)
自此,整体的设计思路完成。 pytest的框架功能以及插件非常丰富,可以自己查找相关资料使用
如果有需要可仔细查看完整代码
地址:https://github.com/Grandlulu/atx-pytest
移动端自动化openatx开源项目介绍,pytest并发测试框架结合的更多相关文章
- windows下nodejs express安装及入门网站,视频资料,开源项目介绍
windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件下载地址: ...
- 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍
揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...
- 6个P2P流媒体开源项目介绍
P2P流媒体开源项目介绍 1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据 ...
- P2P流媒体开源项目介绍
P2P流媒体开源项目介绍1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据.节 ...
- 在Spring Boot项目中使用Spock测试框架
本文首发于个人网站:在Spring Boot项目中使用Spock测试框架 Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目 ...
- J2EE开发之常用开源项目介绍
主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层: 1)Hibe ...
- 08_android入门_android-async-http开源项目介绍及用法
android-async-http开源项目可以是我们轻松的获取网络数据或者向server发送数据.使用起来很easy,关于android-async-http开源项目的介绍内容来自于官方:http: ...
- 【Android开发经验】移动设备的“声波通信/验证”的实现——SinVoice开源项目介绍(一)
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在APP市场上,常常有一些充满新意的应用让我们眼前一亮,比方微信的面对面加好友,支付宝的声波支付等等,都是通 ...
- Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率
测试 目前主流的就bdd和tdd,自己查一下差异 推荐 mocha和tape 另外Jasmine也挺有名,angularjs用它,不过挺麻烦的,还有一个选择是qunit,最初是为jquery测试写的, ...
随机推荐
- hdu 2824 The Euler function 欧拉函数打表
The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
经过搜索查找,发现错误原因是我在win7 x64的机器上装了64位的python IDLE,不能有效load32位的dll,换成32位的python就好了.
- SSD论文理解
SSD论文贡献: 1. 引入了一种单阶段的检测器,比以前的算法YOLO更准更快,并没有使用RPN和Pooling操作: 2. 使用一个小的卷积滤波器应用在不同的feature map层从而预测BB的类 ...
- input聚焦后光标移动至末尾
var valSrc=obj.val();obj.val(“”).focus().val(valSrc);
- English trip V1 - 3.What Would you Like? Teacher:Lamb Key: would like to
In this lesson you will learn to talk about fast food and health. would = will 的过去式 STARTER 1.Tell y ...
- English trip -- VC(情景课)9 A Get ready
She is doing homwork He is doing laundry He is drying the dishes She is making lunch She is making t ...
- 『PyTorch』第十二弹_nn.Module和nn.functional
大部分nn中的层class都有nn.function对应,其区别是: nn.Module实现的layer是由class Layer(nn.Module)定义的特殊类,会自动提取可学习参数nn.Para ...
- hdu1358 kmp的next数组
For each prefix of a given string S with N characters (each character has an ASCII code between 97 a ...
- python-day52--前端html、css
一.html需掌握的: 1. img标签 属性:src alt title width height 2. a标签 属性:href target 3. ul 标签及li 标签,二者都是块级标签 ul ...
- gleez开发环境搭建
一.虚拟主机目录配置 1.配置apache服务器 Apache是常用的web服务器,即常见的用来处理http协议,处理网页的. Apache的配置文件都存放在/etc/apache2/目录,这里有很多 ...