Airtest多设备跑
一. 一个脚本对应一台设备
核心点:组织运行命令;将组织好的命令传到pool进程池(注意:是进程池,不是线程池,python的线程池不是同步执行,是按序执行)
以下不需要看,为私人项目备份目的。

run_mul.py 代码如下:
# -*- encoding=utf8 -*-
from airtest.core.android.adb import ADB
from multiprocessing.pool import Pool
import os def get_all_dir():
"""
:return: 获得所有的文件夹
"""
cur_dir = os.path.dirname(os.path.realpath(__file__))
dirs_ls = []
for dirs in os.listdir(cur_dir):
isdir = os.path.join(cur_dir, dirs)
if os.path.isdir(isdir):
dirs_ls.append(isdir)
return dirs_ls def create_dic_data():
""" :return: [{"dev":"","login.air":"","NEXT.air":""},]
"""
ls = []
devicess = ADB().devices()
# print(devicess) if len(devicess) == len(get_all_dir()):
for num in range(len(devicess)):
d = {}
d["device"]=devicess[num][0]
d["login.air"]=get_all_dir()[num]+"/login.air"
d["NEXT.air"]=get_all_dir()[num]+"/NEXT.air" ls.append(d)
else:
print("设备个数与脚本个数对应不上:设备个数:%s,脚本个数:%s"%(len(devicess),len(devicess))) return ls def create_dic_command():
""" :return: [[airtest ... login.air,airtest ... NEXT.air],]
""" ls = []
for i in create_dic_data():
comm_login = 'airtest run %s --device Android:///%s' % (i['login.air'], i['device'])
log_path = i['NEXT.air'].replace("NEXT.air","report")
comm_next = 'airtest run %s --device Android:///%s --log %s' % (i['NEXT.air'], i['device'],log_path)
lls=[comm_login,comm_next]
ls.append(lls)
return ls def main(comm):
print("main:%s"%comm)
os.system(comm) if __name__ == '__main__':
pool = Pool()
pool.map(main,[i[0] for i in create_dic_command()])
pool.map(main,[i[1] for i in create_dic_command()]) 二. 一个脚本对应多台设备 github: https://codeload.github.com/AirtestProject/multi-device-runner/zip/master
Airtest多设备跑的更多相关文章
- airtest+poco多脚本、多设备批处理运行测试用例自动生成测试报告
一:主要内容 框架功能及测试报告效果 airtest安装.环境搭建 框架搭建.框架运行说明 airtest自动化脚本编写注意事项 二:框架功能及测试报告效果 1. 框架功能: 该框架笔者用来作为公司的 ...
- unity3d协同不同设备的代码
unity3d的脚本代码中,Update()函数每一帧都会运行一次. 假设有这两台设备:一台超级四路泰坦计算机,一台旧手机,它们一起运行一个赛跑游戏,Update()函数每一帧运行一次,游戏中的小人就 ...
- 26、android上跑apache的ftp服务
一.为啥 在android设备跑ftp服务,在现场方便查看日志,目前就是这么用的. 二.前提: 从apache的官网下载依赖包:http://mina.apache.org/ftpserver-pro ...
- Airtest结合tidevice实现IOS自动化测试
这篇博文内容,是基于之前的配置而来的.我们可以先回顾一下之前博文,Windows搭建mac黑苹果系统:WebDriverAgent重签名爬坑记 . 今天来分享下如何通过 tidevice实现IOS自动 ...
- 查看当前正在运行的activity
找到sdk的安装路径,比如我的是 D:\prostu\Android\android-sdk\tools该路径下的: hierarchyviewer.bat 双击,可以用此工具查看设备跑的是当前的哪个 ...
- png图片那点事
PNG图片格式现在包含三种类型: 1.PNG8 256色PNG的别名 2.PNG24 全色PNG的别名 3.PNG32 全色PNG的别名 基本上PNG32就是PNG24,但 ...
- 【转】如何优化Cocos2d-X游戏的内存
Published on 2013 年 2 月 4 日, by donglin http://blog.chukong-inc.com/index.php/2013/02/04/%E5%A6%82%E ...
- ios内存详解
IOS以及Mac os都是基于Unix/linux改造出来的,而在内存管理方面也沿用了Unix/Linux的内存管理机制. 下面主要说的是IOS系统,有很多比较喜欢捣鼓的吧友肯定自己清理过机器的内存, ...
- cocos2d-x3.2中怎样优化Cocos2d-X游戏的内存
在游戏项目优化中都会碰到一个问题,怎样既能降低内存又能尽量降低包的大小?在实际项目中有些经验分享一下,其实2D游戏中最占内存的就是图片资源,一张图片使用不同的纹理格式带来的性能差异巨大.下表是我在IO ...
随机推荐
- js中三个默认方法call,applay,bind
这三个都是函数自带的方法(Function.prototype),这三个方法都能够改变函数内部 this的指向, call //call方法接收三个参数,第一个是this指向,第二个,三个是传递给函数 ...
- 【例题 4-4 uva 213】Message Decoding
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 输入的二进制长度最长为7 所以得开个sta[7][2^7]的样子才存的下所有的字符的.. 定义这么一个数组当字典. 然后一个字符一个 ...
- Maven错误:[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?的解决方法
错误: [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather tha ...
- WebApplicationContext初始化(转)
ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,ApplicationContext则是“应用的容器”了:在We ...
- net_->ForwardBackward()的大致梳理
net_->ForwardBackward()方法在net.hpp文件中 Dtype ForwardBackward() { Dtype loss; Forward(&loss); Ba ...
- Aizu/Aoj 0033 Ball
题目大意: 有编号1到10共10个球,从上方丢下去,入口处可以选择进入左边或者右边,最后10个球全部落下去后如果左右两侧都是从小到大的顺序,则输出YES:否则输出NO. 题目原本的标签枚举,复杂度是2 ...
- Android与JS互相调用以及注意
近期项目中常常使用Html5而Android与JS调用常常会用到,这里记录一下,測试系统5.0以上. 这里先贴一下源代码 Activity: package jwzhangjie.com.webvie ...
- Makefileeasy犯错的语法
1.引言 近期学习android的Build系统,接触最多的自然就是Makefile语法.发现非常多easy出错的地方,不避开这些错误语法没法真正了解Makefile的内涵.以下就介绍遇到的一些让人困 ...
- Android开机键失灵启动手机的解决的方法
问题描写叙述 Android手机的关机键损坏,无法开机. 解决方法 将手机通过USB线链接电脑,进入命令行.找到adb命令所在文件夹.执行例如以下命令: adb reboot 注意:用这样的方法的前提 ...
- oc17--点语法
// // Person.h // day13 #import <Foundation/Foundation.h> @interface Person : NSObject { // @p ...