ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

移动端自动化openatx开源项目介绍,pytest并发测试框架结合

2019-03-05 17:43:48  阅读:471  来源: 互联网

标签:appium driver 开源 cmdopt 并发 openatx pytest atx


开头

相信不少用过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

 

标签:appium,driver,开源,cmdopt,并发,openatx,pytest,atx
来源: https://www.cnblogs.com/grandlulu/p/10478300.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有