移动端自动化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测试写的, ...
随机推荐
- 基于MySQl的分页显示
<%@page import="java.sql.DriverManager"%> <%@page import="java.sql.ResultSet ...
- 磁条卡,IC卡,ID卡,信用卡芯片卡,信用卡磁条卡 等等的区别
1.条码卡:该卡卡面上有一串条码,通过扫描枪或者相应的条码读卡器读出该条码卡的卡号.根据条码的不同又分为39码等其它码.条码卡仅仅是一个编号,不存蓄其它内容.特点:价格便宜类似磁卡. 2.磁条卡:类似 ...
- Python day8常用格式化format类2
format常用格式化 tp1="i am {},age {},{}".format('LittlePage',18,'boy') tp2="i am {},age {} ...
- 【转】VC6在Win7下打开文件崩溃问题
http://www.cnblogs.com/Leon5/archive/2011/08/24/2152670.html 1.微软针对这个问题发布了一个补丁包.下载地址 2.下载之后是一个源码包,解压 ...
- es6模块 nodejs模块和 typescript模块
es6模块 import和export nodejs模块 require和module.exports typescript模块 module和export
- ubuntu下使用CAJ云阅读--CAJViewer(Cloud)
摘要:Linux(Ubuntu)没有直接打开caj论文格式的软件.网上流传最多的“CAJViewer6.0_green”.“CAJViewer7.2”都没法正常使用,所以迫切需要新的方法或软件;我发现 ...
- 『TensotFlow』RNN/LSTM古诗生成
往期RNN相关工程实践文章 『TensotFlow』基础RNN网络分类问题 『TensotFlow』RNN中文文本_上 『TensotFlow』基础RNN网络回归问题 『TensotFlow』RNN中 ...
- Windows下sklearn源码安装
简介 在Windows下编译sklearn源码,主要注意二点: 编译环境的搭建 编译顺序 编译环境的搭建 如果环境没有搭建好,最常见的报错,就是"error: Unable to find ...
- Generate PDF in Sourcing through concurrent request,在EBS java并发中调用指定am的方法
package oracle.apps.pon.printing.cp; import java.io.InputStream; import java.io.FileOutputStream; im ...
- python数据类型高阶
python是近年来使用最广泛的一种编程语言,不管是做web开发,还是网络爬虫,亦或是数据分析等,大家都在选择python来完成这些任务:我想最重要一点就是python学起来很简单,另一个点就是pyt ...