由于 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()


↙↙↙阅读原文可查看相关链接,并与作者交流