开头

相信不少用过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并发测试框架结合的更多相关文章

  1. windows下nodejs express安装及入门网站,视频资料,开源项目介绍

    windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件下载地址: ...

  2. 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍

    揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...

  3. 6个P2P流媒体开源项目介绍

    P2P流媒体开源项目介绍  1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据 ...

  4. P2P流媒体开源项目介绍

    P2P流媒体开源项目介绍1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据.节 ...

  5. 在Spring Boot项目中使用Spock测试框架

    本文首发于个人网站:在Spring Boot项目中使用Spock测试框架 Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目 ...

  6. J2EE开发之常用开源项目介绍

    主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层: 1)Hibe ...

  7. 08_android入门_android-async-http开源项目介绍及用法

    android-async-http开源项目可以是我们轻松的获取网络数据或者向server发送数据.使用起来很easy,关于android-async-http开源项目的介绍内容来自于官方:http: ...

  8. 【Android开发经验】移动设备的“声波通信/验证”的实现——SinVoice开源项目介绍(一)

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在APP市场上,常常有一些充满新意的应用让我们眼前一亮,比方微信的面对面加好友,支付宝的声波支付等等,都是通 ...

  9. Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率

    测试 目前主流的就bdd和tdd,自己查一下差异 推荐 mocha和tape 另外Jasmine也挺有名,angularjs用它,不过挺麻烦的,还有一个选择是qunit,最初是为jquery测试写的, ...

随机推荐

  1. 使用wsHttpBinding构建Message安全模式和UserName授权

    http://www.cnblogs.com/artech/archive/2011/05/22/authentication_01.html https://www.cnblogs.com/Fran ...

  2. MVC ---- Linq查询

    Linq查询:编译后,会生成对应的标准查询运算符!所以说,Linq只是类似与Sql的一种更加友好的语法而已: public class LinqDemo{ public static void Tes ...

  3. Python subprocess模块学习总结--转载

    一.subprocess以及常用的封装函数运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python ...

  4. Jmeter高阶学习,运用NotePad++编写工程,随意复制多个工程到同一个工程

    Jmeter创建了工程之后,保存文件后就是一个jmx后缀的文件,你有没有试过单独用文本编辑器打开文件,编辑文件? Step1: 最简单的Jmeter工程,只有一个测试计划 <?xml versi ...

  5. Docker Container的概述

    ·通过Image创建(copy) ·在Image layer之上建立一个container layer(可读写) ·类比对象:类和实例(Image相当于抽象的一个类,Container相当于实例化的一 ...

  6. 【Golang】Debug :decoding dwarf section info at offset 0x0: too short

    解决方法 通过下面的方式升级dlv 来解决这个问题: go get -u github.com/derekparker/delve/cmd/dlv 下面是我记录的定位问题的过程 问题描述 博主升级到了 ...

  7. openstack 问题一览(持续总结中)

    ★名词 Qemu:它也是一种虚拟化技术,主要提供对IO,网络等外设的虚拟化管理.结合KVM(对CPU和内存管理),提供较为完整的虚拟化管理功能. Libvirt:提供了针对各种虚拟机技术的接口,来管理 ...

  8. Codeforces 260C - Balls and Boxes

    260C - Balls and Boxes 思路:模拟.在x前面找到最小值,如果没有,从0跳到n,继续找到最小值,边找最小值路过的点边减1.然后所有值都减去最小值,最小值那个点加上减去的值. 找到x ...

  9. Rspec: everyday-rspec实操: 第8章DRY. (6个方法,其中3个方法好上手)

    Don't Repeat Yourself. • 把操作步骤提取到辅助模块中;✅ • 通过let复用测试中的实例变量;✅ • 把通用的设置移到共享的情景中;⚠️(不喜欢) • 在RSpec和rspec ...

  10. CSS单位分析

    px:单位代表像素,1px代表一个像素点. %:设置子元素为父容器的占比. em:代表该元素中一个字体所占字符,常用在文字首行缩进.其具有继承性. rem:始终代表html中的字符所在位置. vm:1 ...