多进程开启appium执行自动化用例

1,启动单进程服务

启动appium服务的命令: appium -a 127.0.0.1 -p 4723 --bootstrap-port 4724

def appium_start(host, port):
    bootstrap_port = str(port + 1)
    cmd = 'appium -a' + host + ' -p' + str(port) + ' --bootstrap-port' + str(bootstrap_port)
    subprocess.Popen(cmd, shell=True, stdout=open('./' + str(port) + '-log', 'a'), stderr=subprocess.STDOUT)

2, 多进程启动服务

def appium_servers(port):
    # 构建appium进程组
    appium_process = []
    # 根据手机数量创建进程
    watchlist = []
    # 加载appium进程
    for i in range(2):  # len(watchlist)
        ip = '127.0.0.1'
        port1 = port + 2 * i
        if check_port(ip, port):
            appium = multiprocessing.Process(target=appium_start, args=(ip, port1))
            appium_process.append(appium)
        else:
            release_port(port1)
    return appium_process

 3,检测端口

def check_port(ip, port):
    sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        sk.connect((ip, port))
        sk.shutdown(2)
    except OSError as msg:
        print('port {0} is available'.format(port))
        return True
    else:
        print('port {0} already be in use !'.format(port))
        return False

4,释放端口

# 释放端口
def release_port(port):
    # 关闭所有已开启的appium服务
    cmd_kill = 'taskkill /F /t / IM node.exe'
    os.popen(cmd_kill)

 5,启动多进程测试

def start_appium_server(port):
    # 并发启动appium服务
    servers = appium_servers(port)
    for appium in servers:
        appium.start()
    for appium in servers:
        appium.join()

 

posted @ 2020-09-08 20:17  勇敢面对difficult  阅读(236)  评论(0)    收藏  举报