python+uiautomator2 实现多设备并行

由于python的全局解释器锁,无法实现线程并行,要想实现并行,可以通过多进程实现
创建多进程需要用到python模块为mulitmultiprocessing,具体用法和多线程差不多

进入正题:
首先,创建一个project_conf.py的配置文件,用来存放手机的sn号,这个sn号需要全局用到,而且不会改变

#project_conf.py
#默认为空
PROJECT_SN = ''

然后创建一个读取设备SN号的函数,随便哪个模块,能调用就行,我是放在入口文件main.py中

def get_devices_list():
    """ 获取手机设备"""
    cmd = r'adb devices' 
    pr = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    pr.wait()  
    out = pr.stdout.readlines()  # out = pr.stdout.read().decode("UTF-8")
    devices = []
    for i in (out)[1:-1]:
        device = str(i).split("\\")[0].split("'")[-1]
        devices.append(device)
    return devices

再实现多线程

if __name__ == '__main__':
  #进程列表
    p = []
    devices = getphonelist()#取得设备列表
    for i in devices:
    #此处main为脚本入口,每有一个设备,便创建一个进程,传入sn号供程序全局使用
        i = Process(target=main,args=(i,))
        p.append(i)
    for i in p:
        i.start()
    for i in p:
        i.join()

main函数:

import project_conf
def main(device):
  #给此全局SN赋值,供脚本全局使用,如连接设备,区分log,截图命名等
  project_conf.PROJECT_SN=device
  #运行测试
  pytest.main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值